[code]
public class Test {
public static void main(String[] args) {
System.out.println(2.0 - 1.9);
}
}
计算的结果出乎意料:0.10000000000000009
但是加又没错。。为什么呢?
某大侠说:
计算机 无法处理浮点数值额...!!
为什么捏.~ 因为计算机 只能计算整数 浮点计算都是错误的.! 所以不能昂
怎么解决呢:在java中提供了专门的API来搞定。。具体怎么搞的我也不知道
用BigDecimal
public class Test {
public static void main(String[] args) {
System.out.println((new BigDecimal("2.0")).subtract(new BigDecimal("1.9")).doubleValue());
}
}
注意只能传String
b1.add(b2).doubleValue();//----加
b1.subtract(b2).doubleValue();//---减
b1.multiply(b2).doubleValue();//---乘
b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();//---除
注意:除要麻烦点。。。scale 表示表示需要精确到小数点以后几位, 定精度,以后的数字四舍五入。
[/code]
public class Test {
public static void main(String[] args) {
System.out.println(2.0 - 1.9);
}
}
计算的结果出乎意料:0.10000000000000009
但是加又没错。。为什么呢?
某大侠说:
计算机 无法处理浮点数值额...!!
为什么捏.~ 因为计算机 只能计算整数 浮点计算都是错误的.! 所以不能昂
怎么解决呢:在java中提供了专门的API来搞定。。具体怎么搞的我也不知道
用BigDecimal
public class Test {
public static void main(String[] args) {
System.out.println((new BigDecimal("2.0")).subtract(new BigDecimal("1.9")).doubleValue());
}
}
注意只能传String
b1.add(b2).doubleValue();//----加
b1.subtract(b2).doubleValue();//---减
b1.multiply(b2).doubleValue();//---乘
b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();//---除
注意:除要麻烦点。。。scale 表示表示需要精确到小数点以后几位, 定精度,以后的数字四舍五入。
[/code]