我觉得这里有一个简单的解决方案,但我似乎无法找到它。我的字面值为0.05。在我的程序执行过程中,我发现双常数不是0.05,而是0.049999 ......等等。
为什么会发生这种情况,我该如何预防呢?
提前感谢您的帮助!
-Matt
PS - 我会发布快照以提供更多信息,但显然我不能,因为我是新用户......老鼠。
答案 0 :(得分:1)
没有0.05的二进制表示,因为1/20不是2的幂,所以浮点(双精度)表示仅近似它。另一方面,0.5可以准确表示。
如果v是你的文字,那么(v == 0.05)应该是'true'