javabigdecimal最⼤值_JavaBigDecimal详解
引⾔
float和double类型的主要设计⽬标是为了科学计算和⼯程计算。他们执⾏⼆进制浮点运算,这是为了在⼴域数值范围上提供较为精确的快速近似计算⽽精⼼设计的。然⽽,它们没有提供完全精确的结果,所以不应该被⽤于要求精确结果的场合。但是,商业计算往往要求结果精确,这时候BigDecimal就派上⼤⽤场啦。
先看下⾯代码
public static voidmain(String[] args)
bigdecimal取值范围{
System.out.println(0.2 + 0.1);
System.out.println(0.3 - 0.1);
System.out.println(0.2 * 0.1);
System.out.println(0.3 / 0.1);
}
运⾏结果如下
你认为你看错了,但结果却是是这样的。问题在哪⾥呢?原因在于我们的计算机是⼆进制的。浮点数没有办法是⽤⼆进制进⾏精确表⽰。我们的CPU表⽰浮点数由两个部分组成:指数和尾数,这样的表⽰⽅法⼀般都会失去⼀定的精确度,有些浮点数运算也会产⽣⼀定的误差。如:2.4的⼆进制表⽰并⾮就是精确的2.4。反⽽最为接近的⼆进制表⽰是 2.3999999999999999。浮点数的值实际上是由⼀个特定的数学公式计算得到的。
其实java的float只能⽤来进⾏科学计算或⼯程计算,在⼤多数的商业计算中,⼀般采⽤java.math.BigDecimal类来进⾏精确计算。<

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。