-
浮点类型四舍五入小技巧
对浮点数加上0.5再强制转型int n3 = (int) (12.7 + 0.5); // 13
-
关于java浮点运算丢失精度的问题
问题:
测试以下代码,会发现,跟你所期望的不一样。。
public class Test { public static void main(String[] args) { System.out.println(0.05+0.01); System.out.println(1.0-0.42); System.out.println(4.015*100); System.out.println(123.3/100); } }
输出:
0.060000000000000005
0.5800000000000001
401.49999999999994
1.2329999999999999解答
float和double只能用来做科学计算或者是工程计算,在商业计算,特别是金融计算中,我们要用 java.math.BigDecimal。
运行以下代码
import java.math.BigDecimal; public class Test { public static void main(String[] args) { BigDecimal b1 = new BigDecimal(Double.toString(0.05)); BigDecimal b2 = new BigDecimal(Double.toString(0.01)); System.out.println(b1.add(b2)); // 加 BigDecimal b3 = new BigDecimal(Double.toString(1.0)); BigDecimal b4 = new BigDecimal(Double.toString(0.42)); System.out.println(b3.subtract(b4)); // 减 BigDecimal b5 = new BigDecimal(Double.toString(4.015)); BigDecimal b6 = new BigDecimal(Double.toString(100)); System.out.println(b5.multiply(b6)); // 乘 BigDecimal b7 = new BigDecimal(Double.toString(123.3)); BigDecimal b8 = new BigDecimal(Double.toString(100)); System.out.println(b7.divide(b8)); // 乘 System.out.println(b1.divide(b2) instanceof BigDecimal); double d = b1.divide(b2).doubleValue(); System.out.println(d); } }
输出:
0.06
0.58
401.5000
1.233
true
5.0所以,计算结果是BigDecimal对象的数据,也可以用.doubleValue()方法把结果转换成double类型的数据
关于java的浮点运算
最新推荐文章于 2024-04-25 17:55:58 发布