与浮点比较的问题
Issue with comparison with floating point
#include<stdio.h>
int main(void){
float a = 0.7;
if(a<0.7)
printf("C");
else
printf("c++");
}
我正在阅读一本印度作者的教科书来测试你的 c 技能。我在浮点问题章节中发现了这个问题。我正在比较 (0.7<0.7)
这是错误的。那么为什么输出是 c
而不是 c++
.
说明:
0.7 是双常数(默认值)。它的二进制值为
用 64 位编写。
二进制值 0.7 = (0.1011 0011 0011 0011 0011 0011
0011 0011 0011 0011 0011)
现在这里变量 a 是一个浮点变量,而
0.7 是双常数。所以变量 a 将只包含
32 位值即
a = 0.1011 0011 0011 0011 0011 0011 0011 0011
while
0.7 = 0.1011 0011 0011 0011 0011 0011 0011 0011 0011
0011 0011....
很明显 < 0.7
#include<stdio.h>
int main(void){
float a = 0.7;
if(a<0.7)
printf("C");
else
printf("c++");
}
我正在阅读一本印度作者的教科书来测试你的 c 技能。我在浮点问题章节中发现了这个问题。我正在比较 (0.7<0.7)
这是错误的。那么为什么输出是 c
而不是 c++
.
说明: 0.7 是双常数(默认值)。它的二进制值为 用 64 位编写。 二进制值 0.7 = (0.1011 0011 0011 0011 0011 0011 0011 0011 0011 0011 0011) 现在这里变量 a 是一个浮点变量,而 0.7 是双常数。所以变量 a 将只包含 32 位值即
a = 0.1011 0011 0011 0011 0011 0011 0011 0011
while
0.7 = 0.1011 0011 0011 0011 0011 0011 0011 0011 0011
0011 0011....
很明显 < 0.7