java - 删除不必要的舍入
问题描述
我如何得到正确的非舍入结果,就像我在 excel 中得到的那样?
public void testdivide_largenumber() {
double result;
double number = 8789700;
double divisor = 3200;
BigDecimal number_BD = new BigDecimal(number, MathContext.DECIMAL64);
BigDecimal divisor_BD = new BigDecimal(divisor, MathContext.DECIMAL64);
BigDecimal result_BD;
result = (double) (number / divisor);
result_BD = number_BD.divide(divisor_BD);
System.out.println("double result should be 2746.78124999656="+ result );
System.out.println("BigDecimal result should be 2746.78124999656="+ result_BD );
}
结果:
double
结果应该是2746.78124999656=2746.78125
BigDecimal
结果应该是2746.78124999656=2746.78125
解决方案
正如@Lino 在他的评论中指出的那样,8789700/3200 = 2746.78125
. 你从excel得到的结果有浮点舍入错误,java是正确的。
推荐阅读
- python - 如何解决 Python OSMNX 错误信息:TypeError: unhashable type: 'dict'
- javascript - 在nodejs中渲染灰尘模板的问题
- java - 在 Firestore 中保存 Jsonified Java 对象
- javascript - 检测 Woocommerce 中的自定义用户元变化?
- angular - 赛普拉斯测试偶尔失败
- c - xcb 窗口管理器丢失所有键抓取
- sql - 运行此脚本时获取“缺少或无效选项”
- node.js - 无法使用 axios 在节点 js 中获取发布请求
- html - 最难让字体真正显示 html 文件
- android - 有没有办法为 android Material View 底部导航添加圆角?