![]() |
1
5
浮点数的精度有限。0.7很可能无法精确表示,因此A中的值在浮点中可能是0.69999999982左右。与双0.7(更精确地说:0.69999999999999999384)相比,这将表明它的值更小。 |
![]() |
2
4
因为文本0.7的类型是double,而不是float。A的实际值为0.699999…修复:
|
![]() |
3
3
其他答案也暗示了这一点,但这个问题是由于你没有在你的数字上加上“f”而引起的。 任何带小数点的数字都将被编译器隐式地解释为double(即精度是float两倍的64位值)。在第一行中,将double指定给float,从而失去精度(如果打开了应该打开的警告,则会收到编译器警告)。 在第二行中,您将浮点数与双精度数进行比较。浮动将升级为双精度(如果我错了,请纠正我),因此与更精确的0.7相比,0.7的版本更不精确。 解决方案:处理浮动时始终使用“F”,即
|
![]() |
4
1
因为0.7不能精确地表示为float或double。当您将它存储在一个浮点中时,它会比表示为双精度(默认值)时稍微向下取整一点。 |
![]() |
5
1
试试这个:
|
![]() |
6
0
阅读此: What Every Computer Scientist Should Know About Floating-Point Arithmetic 每个 计算机程序员必须知道这一点。 |
![]() |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
![]() |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
![]() |
rainer · 后台插入程序的初始化 1 年前 |
![]() |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
|
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |