有关判断浮点数相等的问题
发布网友
发布时间:2022-04-15 09:30
我来回答
共2个回答
热心网友
时间:2022-04-15 11:00
最关键是浮点数实际上是二进制的"科学计数法",
每个十进制的数化成二进制小数时,
与我们想像的可能差别比较大.
一个十进制不循环的小数,
可能在二进制中实际是循环小数,
只能用近似值来表示.
所以二进制比较相等时要小心.
另外,
比如,
我们在日常计算时,
把10000个0.1加起来是1000,
而在用浮点数计算时,
0.1是近似的,
加10000次以后误差就会放大,
而不是1000了,
所以用浮点数做循环条件时也要注意.
其实这不是C/C++的问题.
浮点数均如此.
在PC上用的浮点数格式如单精度,
双精度,
都有这个问题.
总之,
时时记住整型是准的,
浮点型是近似的.
热心网友
时间:2022-04-15 12:18
浮点数在c/c++里面并非是非常准确的,比如你定义一个浮点数,1.0,那么这个浮点数的实际的值可能是1.000001
也可能是1.00002,不确定,所以两个你定义的看似相等的浮点数实际上并不相等。