java - 在 Java 中,如果舍入不一致,我如何预见舍入错误?例如 0.03 * 100 = 10.029999 但 10.05 * 100 = 10.0500001?
问题描述
所以,我刚刚开始学习,我知道舍入错误问题在这里最常见。但是我找不到一个可以明确回答为什么会发生这种特殊事情的答案,或者更确切地说,我怎么知道要寻找什么?我知道这是因为变量的存储方式而发生的,并且它们可以保留多少小数位是有限制的,但我不确定为什么每个数字都不同。除了那个解释,我找不到更多的东西了。
我的教科书警告我要小心舍入错误,我确实知道如何将它们更正到我想要的小数位。但是,我仍然想知道我们如何为可能发生的数字做好准备。在编程过程中,我们可以要求控制台打印以检查并确保我们的数字是正确的,但是有没有办法在它发生之前“检测”它或者厌倦了哪些数字做什么?
有些数字没有舍入误差。示例:10.02 * 100 = 1002。
但是 10.03 * 100 = 1002.9999999999999
10.04 * 100 = 1003.9999999999999
10.05 * 100 = 1005.0000000000001
如果它与二进制有关,为什么 4 不安全?
解决方案
推荐阅读
- javascript - 将数据从数组传递到数组
- php - PHP:如何使用 whereIn 子句根据多个 ID 更新一列
- javascript - 关于获取密钥 JSON 多类的问题
- cloudflare-workers - 将重定向传递给访问者?
- c++ - rust-bindgen 绑定引发 SIGSEGV
- reactjs - 在 axios/ajax 调用中处理 Symfony 路由
- c - 错误预期)同时将结构的指针成员传递给函数
- javascript - 使用 Javascript 查找超级数字,CMD 中出现 NaN 错误
- python - 如何在不通过表单验证的情况下在 UpdateView 中进行验证?
- android - android studio 3.3 中的“包括 C++ 支持”选项在哪里?