浮点表示错误?

发布于 2024-12-06 16:04:55 字数 277 浏览 1 评论 0原文

当我做这个乘法时

0.94 * 8700

输出为

8177.999999999999

但应该是

8178

我正在使用 java,但我认为此错误与特定编程语言无关 现在我的问题是......为什么会发生这种情况?
还有哪些其他数字(仅作为示例)会导致相同的错误?

when i make this multiplication

0.94 * 8700

the output is

8177.999999999999

but it should have been

8178

i'm using java , but i don't think this error is related to a particular Programming language
now my question is ... why this happened ??
and what other numbers (just as an example) cause the same error?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

秋日私语 2024-12-13 16:04:55

您的情况的具体原因是实数 0.94 无法用双精度浮点数精确表示。当您输入 0.94 时,实际存储的数字为 0.939999999999999946709294817992486059665679931640625

The specific reason in your case is that the real number 0.94 cannot be represented exactly in a double precision floating point. When you type 0.94, the actual number stored is 0.939999999999999946709294817992486059665679931640625.

杀手六號 2024-12-13 16:04:55

这不是一个错误。 IEEE 浮点数不能精确表示十进制数。

It isn't an error. IEEE floats can't represent decimal numbers exactly.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文