加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 舍入小数时获得不同的结果

发布时间:2020-12-15 02:05:57 所属栏目:Java 来源:网络整理
导读:double radius = 5;double area = Math.PI * Math.pow(radius,2); // System.out.println(area);BigDecimal bd = new BigDecimal(area).setScale(2,HALF_UP);// BigDecimal bd = new BigDecimal(area).setScale(2,ROUND_HALF_UP);System.out.println(bd.toSt
double radius = 5;
double area = Math.PI * Math.pow(radius,2);            
// System.out.println(area);

BigDecimal bd = new BigDecimal(area).setScale(2,HALF_UP);
// BigDecimal bd = new BigDecimal(area).setScale(2,ROUND_HALF_UP);
System.out.println(bd.toString());

上面的输出打印为78.54,但如果我通过计算器(windows calc接口)执行相同的操作,则输出为78.57(即22/7 * 25).

为什么会出现不一致的情况

解决方法

您是否使用22/7作为PI的近似值?因为22/7是3.142857142857 …其中PI约为3.14159 ….这解释了您的舍入不一致性.

在here中记录了JVM中使用的PI的近似值.根据JavaDoc,它是:

The double value that is closer than any other to pi

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读