Java中精确的数字计算类BigDecimal
2017-01-16 17:01
260 查看
在日常开放当中需要我们计算数字,利率。通常Java的做法是使用Math相关的API。但是,这样做是不够精确的,由于float和double不能进行计算,如果强行进行计算会使得计算不准确。造成难以挽回的损失。为了弥补这一个缺点Java提供了BigDecimal这个类来解决。在使用这个类的时候需要将double转成String进行计算。为了方便,下面我写了几个常用的计算方法,当然也可以自己增加。
欢迎关注我的微信公众号
public class CalculateUtils { /** * 加法 * * @param var1 * @param var2 * @return */ public static double add(double var1, double var2) { BigDecimal b1 = new BigDecimal(Double.toString(var1)); BigDecimal b2 = new BigDecimal(Double.toString(var2)); return b1.add(b2).doubleValue(); } /** * 减法 * * @param var1 * @param var2 * @return */ public static double sub(double var1, double var2) { BigDecimal b1 = new BigDecimal(Double.toString(var1)); BigDecimal b2 = new BigDecimal(Double.toString(var2)); return b1.subtract(b2).doubleValue(); } /** * 乘法 * * @param var1 * @param var2 * @return */ public static double mul(double var1, double var2) { BigDecimal b1 = new BigDecimal(Double.toString(var1)); BigDecimal b2 = new BigDecimal(Double.toString(var2)); return b1.multiply(b2).doubleValue(); } /** * 除法 * * @param v1 * @param v2 * @param scale 精度,到小数点后几位 * @return */ public static double div(double v1, double v2, int scale) { if (scale < 0) { throw new IllegalArgumentException("The scale must be a positive integer or "); } BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue(); } /** * 四舍五入 * @param v * @param scale 精确位数 * @return */ public static double round(double v, int scale) { if (scale < 0) { throw new IllegalArgumentException("The scale must be a positive integer or zero"); } BigDecimal b = new BigDecimal(Double.toString(v)); BigDecimal one = new BigDecimal("1"); return b.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue(); } }
欢迎关注我的微信公众号
相关文章推荐
- Java中精确的数字计算类BigDecimal
- Java中精确的数字计算类BigDecimal
- java的数字精确计算问题-BigDecimal
- java数字精确计算的解决方案---BigDecimal
- 使用BigDecimal进行精确数字运算
- Java基础----使用BigDecimal进行精确运算
- BigDecimal实现Java浮点数的精确计算
- Java中需要精确计算的,不要用float, double, 请用BigDecimal
- 数字精确运算BigDecimal常用方法
- java精确数字计算
- JAVA中的大数字BigInteger和BigDecimal
- java.math.BigDecimal、BinInteger类的用法(用于精确运算)
- Java中使用BigDecimal进行浮点数精确计算、超大整数、浮点数等计算,没有数位限制
- 【JavaSE】Java高精度计算类:BigInteger和BigDecimal
- java精确计算之BigDecimal
- Java中精确计算的一个类用BigDecimal
- Java中使用BigDecimal实现精确舍五入及工程运算
- Java中使用BigDecimal进行浮点数精确计算、超大整数、浮点数等计算,没有数位限制
- Java中使用BigDecimal进行浮点数精确计算、超大整数、浮点数等计算,没有数位限制
- \t\tJava中精确计算的一个类BigDecimal