几天在CSDN论坛里看见了一篇Java面试题:
为何金额变项不能用float或double?要用java的哪一个Class来做金额变项?
我一点都不知道,还会有这样的问题,忽然感觉学习的路还很长很长,入门都不是~~~
下面我们就谈一谈Java里的浮点运算
Java中浮点运算对于很多值浮点数都是采用其能够表示的离目标值最近的数来表示,这有可能会在计算中带来不易觉察的误差。
[code lang="java"]
public class plus {
public static void main(String[] ages){
double d1=2.017;
double d2=1.013;
System.out.println(d1+d2);
}
}
[/code]
出现了精度的问题了。有可能一个运算两个结果的情况。
一般我们可以用可以用 java.math.BigDecimal 来解决这样的问题
[code lang="java"]
import java.math.BigDecimal ;
public class pluss {
public static void main(String[] args) {
double d1=4.07;
double d2=1.03;
System.out.println(d1+d2);
BigDecimal b1=new BigDecimal("4.07");
BigDecimal b2=new BigDecimal("1.03");
System.out.println("b1:"+b1);
System.out.println("b2:"+b2);
System.out.println("相加值:"+b1.add(b2));
}
}
[/code]
哈哈 。学习了。
![JavaPlus](http://99it-upload.stor.sinaapp.com/javaplus.png)
![](http://99it-upload.stor.sinaapp.com/javapluss.png)
![JavaCode JavaCode](http://99it-upload.stor.sinaapp.com/javalogo.png)