关于浮点数的比较以及提供精确的浮点数比较算法

来源:互联网 发布:逻辑思维和编程 编辑:程序博客网 时间:2024/06/05 17:49

例如:

public class Test{public static void main(String[] args) throws Exception{System.out.println("7.22-7.0 = " + (7.22f-7.0f));}}
Result:7.22-7.0 = 0.21999979

结果并不是我们所期望的0.22,而是0.21999979

所以在编程中,如果用到浮点数,要特别注意误差问题,

并尽量避免浮点数的比较,特别是对精度有严格要求的货币等。


解决方法:

import java.math.BigDecimal;/***support exact arithmetic*@param v1*@param v2*/public class Test{public static void main(String[] args) throws Exception{System.out.print("7.22-7.0=" + subtract(7.22,7.0));}public static double subtract(double v1,double v2){BigDecimal b1 = new BigDecimal(Double.toString(v1));BigDecimal b2 = new BigDecimal(Double.toString(v2));return b1.subtract(b2).doubleValue();}}




原创粉丝点击