奇怪,文本值(双精度类型)的意外更改

本文关键字:意外 类型 双精度 文本 奇怪 | 更新日期: 2023-09-27 18:31:29

我觉得这里有一个简单的解决方案,但我似乎找不到它。我有一个常数的文字 0.05。在我的程序执行过程中,我发现双精度常量不是被视为 0.05,而是被视为 0.049999...等等。

为什么会发生这种情况,我该如何防止它?

提前感谢您的帮助!

-马 特

PS - 我会发布快照以提供更多信息,但显然我不能,因为我是新用户......大 鼠。

奇怪,文本值(双精度类型)的意外更改

没有 0.05 的二进制表示,因为 1/20 不是 2 的幂,因此浮点(双精度)表示仅近似于它。 另一方面,0.5 可以精确地表示。

如果 v 是你的文字,那么 (v == 0.05) 应该是"true"