Я хочу выбрать первые две цифры после десятичной точки и проверить, совпадают ли они, а не 0

Я пытаюсь получить первые две цифры после десятичной точки числа и проверки, чтобы увидеть, равны ли они друг другу и, в то же время, не равны 0.

Я знаю, как сделать проверку вещи но Я понятия не имею, как выбрать первые две цифры после десятичной точки.

Использование setprecision даст мне номер полностью, а не только две цифры после десятичной точки.

Например:

i = 3.141592
cout << setprecision(3) << i

выведет 3,14, но я хочу только 14.

0

Решение

Вы можете использовать функцию пола из станд библиотека

int(i*100 - (floor(i))*100)

Вот хороший пример веб-страницы: http://en.cppreference.com/w/cpp/numeric/math/floor

0

Другие решения

Вы можете реализовать функцию, которая возвращает цифры в виде целого числа.

#include <math.h>

int digits_after_decimal_point(double number, unsigned int precision){
double trunc = number - static_cast<int>(number); //3,141 > 0,141
return static_cast<int>(trunc * pow(10,precision));
}

Пример вызова:

std::cout << digits_after_decimal_point(3.14159, 3) << std::endl;

Выход:

141

Но проблема в том, что проверка цифр целых чисел (без использования связки % операции) довольно неустранимый. Таким образом, для проверки вы можете преобразовать результат в std::string (с помощью std::ostringstream), а затем вы можете сравнить конкретные показатели.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector