Я столкнулся с каким-то странным округлением с поплавками. Приведенный ниже код демонстрирует проблему. Каков наилучший способ решить эту проблему? Я искал решения, но не имел большой удачи.Округление с плавающей точкой в C
#include<stdio.h>
int main(void)
{
float t;
t = 5592411;
printf("%f\n", 1.5*t);
t *= 1.5;
printf("%f\n", t);
return 0;
}
Код выше должен распечатать такое же значение, но я получаю это на моей установке с помощью GCC 4.7.2:
8388616,500000
8388616.000000
If I используйте калькулятор, я получаю первое значение, поэтому я предполагаю, что второе округляется каким-то образом. У меня идентичный код Fortran, который не округляет значение (имеет значение 0.5).
'1.5 * t' - выражение' double', а 't * = 1.5' - это выражение' float'. –