Как сохранить десятичное значение до 2 знаков после запятой в другой переменной в C?
Предположим, что a = 3,91900007534.
В языке C я хочу сохранить значение переменной 'a' в другой переменной 'r' с точностью до двух десятичных знаков, так что r = 3,92.
Обратите внимание, что я не хочу печатать значение с точностью до двух десятичных знаков, просто хочу сохранить значение, так как мне нужно точное значение 'r' для следующей операции.
2 ответа
Самый быстрый способ, который я могу придумать, - это использовать следующий метод, то есть умножение на 100, округление, а затем снова деление на 100:
int main()
{
float number = 1.2345672;
// Setting precision to 2 digits
number = round(number*100)/100;
printf("%g", number);
return 0;
}
Конечно, если вам нужно 3 десятичных знака, это будет 1000 , а не 100.
Итак, мы можем создать очень хорошую общую функцию, например:
double precisionSetter(double num, double precision)
{
return round(pow(10,precision)*num)/pow(10,precision);
}
Таким образом, вы можете легко выбрать, сколько десятичных знаков вы хотите:
double a = 1.234567
a = precisionSetter(a,2)
Вышеупомянутое округлит поплавок. Если вас интересует усечение указанного числа с плавающей запятой, используйте
floor()
функция, а не
round()
один.
Просто умножьте на 100, усеките число с помощью
floor
и разделим на 100:
double convert( double in ){
return floor(in*100)/100.0;
}
Более общий подход:
#include <math.h>
double convert( double in, int decimals ){
double aux = pow(10,decimals);
return floor(in*aux)/aux;
}
Как сказал @Some программист, приведенный выше код обрезается. Если вы хотите округлить, просто замените
floor()
к
round()
:
double convert( double in ){
return round(in*100)/100.0;
}
Вот код работает: https://onlinegdb.com/By-a1Urf _