Когда я написал простую программу для чтения и печати числа с использованием float, я наткнулся на некоторые неожиданные результаты.Неверное значение Float
В следующей программе, когда я ввел номер 100.62, результат, который я получил, был 100.620003. Значение до восьми цифр указано правильно. Даже когда я пробовал разные номера, проблема сохранялась. Почему это? Есть ли способ преодолеть эту проблему, кроме как ограничивая десятичные точки.
А также есть способ распечатать цифру, как есть? то есть; если я вхожу в 100.62, он должен печатать 100.62, а если ввести 100.623, он должен распечатать 100.623 (не 100.620000 и 100.623000).
int main (void)
{
float i;
printf ("Enter a number : ");
scanf ("%f", &i);
printf ("You entered the number : %f", i)
return 0;
}
Если вы хотите напечатать значительные цифры, попробуйте '% g'. Также: http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html – szczurcio
Так как значения с плавающей запятой работают на компьютерах. Объяснение можно найти здесь: [Является ли математика с плавающей запятой?] (Http://stackoverflow.com/questions/588004/is-floating-point-math-broken) –