概述
项目中会经常用到小数位的计算。很多人第一感觉会想尝试使用float或者double,然而在精准计算,例如金钱计算中,使用float或者double来计算会出现意想不到后果。
如图所示:并没有得到预期的0.05。
出现原因分析:Java在计算浮点数的时候,由于二进制无法精确表示0.1的值(就好比十进制无法精确表示1/3一样)。
解决方案:2种
1.先用整数加减乘除,再除以小数位。
2.使用BigDecimal类进行金额及其他精确计算
注意事项:
(1)一定要用BigDecimal(String)构造器,而非其他,例如new BigDecimal(0.1),它将返回0.1000000000000000055511151231257827021181583404541015625 。
在计算的时候,应该先把数字转换成String类型的,才能得到最精确的值。
(2)比较两个浮点数的大小,要使用BigDecimal的compareTo方法。
(3)附常用的方法:
add 加
subtract 减
multiply 乘
divide 除
abs 绝对值
getScale 取几位小数
pow 几次方
最后
以上就是和谐纸鹤为你收集整理的java 计算小数_java基础之小数计算的全部内容,希望文章能够帮你解决java 计算小数_java基础之小数计算所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复