BigDecimal的用途及示例分享
下文笔者讲述使用java代码实现BigDecimal的工具类及示例分享,如下所示
使用BigDecimal类即可避免精度类的异常问题
我们都知道java在进行浮点型计算时 会出现精度丢失的现象例:精度丢失的示例说明
package com.java265; public class BigDecimalTest { public static void main(String[] args) { double d1=0.05; double d2=0.01; double d3=d1+d2; System.out.println("d1+d2="+d3); } } ----运行以上代码,将输出以下信息---- d1+d2=0.060000000000000005解决方法
使用BigDecimal类即可避免精度类的异常问题
package com.java265; import java.math.BigDecimal; /** *BigDecimal使用示例 */ public class BigDecimalTest { public static void main(String[] args) { double d1=0.05; double d2=0.01; double d3=d1+d2; System.out.println("d1+d2="+d3); BigDecimal b1 = new BigDecimal(Double.toString(d1)); BigDecimal b2 = new BigDecimal(Double.toString(d2)); BigDecimal b3 = b1.add(b2); System.out.println("b1+b2="+b3); } } ------运行以上代码,将输出以下信息-------- d1+d2=0.060000000000000005 b1+b2=0.06
下文是笔者编写的BigDecimal工具类,如下所示 BigDecimal常用工具类: package com.java265; import java.math.BigDecimal; /** * BigDecimal常用工具类 */ public class BigDecimalUtil { public static BigDecimal add(double d1, double d2) { BigDecimal b1 = new BigDecimal(Double.toString(d1)); BigDecimal b2 = new BigDecimal(Double.toString(d2)); return b1.add(b2); } public static BigDecimal sub(double d1, double d2) { BigDecimal b1 = new BigDecimal(Double.toString(d1)); BigDecimal b2 = new BigDecimal(Double.toString(d2)); return b1.subtract(b2); } public static BigDecimal mul(double d1, double d2) { BigDecimal b1 = new BigDecimal(Double.toString(d1)); BigDecimal b2 = new BigDecimal(Double.toString(d2)); return b1.multiply(b2); } /** * divide(BigDecimal divisor, int scale, int roundingMode) * 该方法第二个参数scale表示保留小数点后几位小数 * 该方法第三个参数roundingMode常用于设置四舍五入ROUND_HALF_UP */ public static BigDecimal div(double d1, double d2) { BigDecimal b1 = new BigDecimal(Double.toString(d1)); BigDecimal b2 = new BigDecimal(Double.toString(d2)); return b1.divide(b2, 2, BigDecimal.ROUND_HALF_UP); } }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。