【发布时间】:2015-02-17 10:19:48
【问题描述】:
今天我在玩 C 中的浮点数
代码喜欢:
float a = 0.0;
a += 0.8;
if(a == 0.800000)
printf("correct");
if 语句没有被执行,为此我打印了 a 的值为 0.800000。
void main(){
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
语句 7correct 和 8correct 没有被打印出来。
任何人都可以在这里解释一下Brief!!
【问题讨论】:
-
if(fabs(a-0.800000)
-
每个程序员都应该阅读this simple guide,了解为什么浮点数并不总是相加!
标签: c floating-accuracy floating-point-precision