解决java中两个double类型的值相加

来源:互联网 发布:linux vi 搜索 下一个 编辑:程序博客网 时间:2024/05/22 14:18
每周六都急急忙忙赶过来加班,今天早上一同事问我两个double类型相加会出现精度问题,找了很久没找到原因,后来在网上一看需要额外处理一下,提供几个通用的方法。
/** * 提供精确的加法运算 * @param v1 被加数 * @param v2 加数 * @return 两个参数的和 */public static double add(double v1, double v2){BigDecimal b1 = new BigDecimal(Double.toString(v1));BigDecimal b2 = new BigDecimal(Double.toString(v2));return b1.add(b2).doubleValue();}/** * 提供精确的减法运算 * @param v1 被减数 * @param v2 减数 * @return 两个参数的差 */public static double sub(double v1, double v2){BigDecimal b1 = new BigDecimal(Double.toString(v1));BigDecimal b2 = new BigDecimal(Double.toString(v2));return b1.subtract(b2).doubleValue();}/** * 提供精确的乘法运算 * @param v1 被乘数 * @param v2 乘数 * @return 两个参数的积 */public static double mul(double v1, double v2){BigDecimal b1 = new BigDecimal(Double.toString(v1));BigDecimal b2 = new BigDecimal(Double.toString(v2));return b1.multiply(b2).doubleValue();}
0 0