今天我在玩C中的 float
喜欢的代码:
float a = 0.0;
a += 0.8;
if(a == 0.800000)
printf("correct");
if 语句没有被执行,为此我打印了 a 的值为 0.800000。
无效主函数(){
float a=0.0f;
a=a+0.1f;
if(a==0.1f)
printf( "1correct");
a += 0.1f;
if(a==0.2f)
printf( "2correct");
a += 0.1f;
if(a==0.3f)
printf( "3correct");
a += 0.1f;
if(a==0.4f)
printf( "4correct");
if(a==0.5f)
printf( "5correct");
a += 0.1f;
if(a==0.6f)
printf( "6correct");
a += 0.1f;
if(a==0.7f)
printf( "7correct");
a += 0.1f;
if(a==0.8f)
printf( "8correct");
}
以下程序将输出打印为:
1correct2correct3correct4correct5correct6correct
语句 7 Correct 和 8 Correct 没有被打印出来。
任何人都可以在这里解释一下简介!!
最佳答案
有许多十进制数字无法用有限数量的二进制数字精确表示。
一般来说,测试 float 或 double 是否完全相等并不是一个好主意。如果您确实想测试它们,请检查它们是否在一个小范围内:
if ( a > 0.799999 && a < 0.800001 )
printf( "correct" );
只要您可以使用整数而不是 float 或 double ,就这样做。例如,不要使用 float 作为循环计数器或数组索引。
浮点有很多很好的用途,例如对物理现象建模、预测天气等,但浮点有很多微妙之处。
关于c - C 中的 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27549800/