Java BigDecimal 精确计算()

花匠人从多个角度为你分享Java BigDecimal 精确计算(),让你更加了解Java BigDecimal 精确计算(),包含生活百科相关的生活技巧、生活小窍门、生活小妙招等生活百科知识。

  本篇文章为你整理了Java BigDecimal 精确计算()的详细内容,包含有Java BigDecimal 精确计算 等,让你从多个方面了解Java BigDecimal 精确计算(),希望对你有帮助。

  开发过程中,如果我们需要精确计算的结果时,必须使用bigDecimal 类来操作。

  BigDecimal 中常用的方法

  加 add(BigDecimal)

  减 subtract(BigDecimal)

  乘 multiply(BigDecimal)

  除 divide(BigDecimal,int) 注:精确到指定小数点,防止无法整除的情况

  比大小 compareTo(BigDecimal)

  工具类

  

public class PrecisionComputingUtil { //默认除法运算精度 private static final int DEF_DIV_SCALE = 4; public static double add(double num1, double num2) { BigDecimal b1 = new BigDecimal(Double.toString(num1)); BigDecimal b2 = new BigDecimal(Double.toString(num2)); return b1.add(b2).doubleValue(); } public static BigDecimal add(String num1, String num2) { BigDecimal b1 = new BigDecimal(num1); BigDecimal b2 = new BigDecimal(num2); return b1.add(b2); } public static String add(String num1, String num2, int scale) { if (scale < 0) { throw new IllegalArgumentException( "The scale must be a positive integer or zero"); } BigDecimal b1 = new BigDecimal(num1); BigDecimal b2 = new BigDecimal(num2); return b1.add(b2).setScale(scale, BigDecimal.ROUND_HALF_UP).toString(); } public static double sub(double num1, double num2) { BigDecimal b1 = new BigDecimal(Double.toString(num1)); BigDecimal b2 = new BigDecimal(Double.toString(num2)); return b1.subtract(b2).doubleValue(); } public static BigDecimal sub(String num1, String num2) { BigDecimal b1 = new BigDecimal(num1); BigDecimal b2 = new BigDecimal(num2); return b1.subtract(b2); } public static String sub(String num1, String num2, int scale) { if (scale < 0) { throw new IllegalArgumentException( "The scale must be a positive integer or zero"); } BigDecimal b1 = new BigDecimal(num1); BigDecimal b2 = new BigDecimal(num2); return b1.subtract(b2).setScale(scale, BigDecimal.ROUND_HALF_UP).toString(); } public static double mul(double num1, double num2) { BigDecimal b1 = new BigDecimal(Double.toString(num1)); BigDecimal b2 = new BigDecimal(Double.toString(num2)); return b1.multiply(b2).doubleValue(); } public static BigDecimal mul(String num1, String num2) { BigDecimal b1 = new BigDecimal(num1); BigDecimal b2 = new BigDecimal(num2); return b1.multiply(b2); } public static double mul(double num1, double num2, int scale) { BigDecimal b1 = new BigDecimal(Double.toString(num1)); BigDecimal b2 = new BigDecimal(Double.toString(num2)); return round(b1.multiply(b2).doubleValue(), scale); } public static String mul(String num1, String num2, int scale) { if (scale < 0) { throw new IllegalArgumentException( "The scale must be a positive integer or zero"); } BigDecimal b1 = new BigDecimal(num1); BigDecimal b2 = new BigDecimal(num2); return b1.multiply(b2).setScale(scale, BigDecimal.ROUND_HALF_UP).toString(); } public static double div(double num1, double num2) { return div(num1, num2, DEF_DIV_SCALE); } public static double div(double num1, double num2, int scale) { if (scale < 0) { throw new IllegalArgumentException("The scale must be a positive integer or zero"); } BigDecimal b1 = new BigDecimal(Double.toString(num1)); BigDecimal b2 = new BigDecimal(Double.toString(num2)); return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue(); } public static String div(String num1, String num2, int scale) { if (scale < 0) { throw new IllegalArgumentException("The scale must be a positive integer or zero"); } BigDecimal b1 = new BigDecimal(num1); BigDecimal b2 = new BigDecimal(num1); return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).toString(); } public static double round(double num, int scale) { if (scale < 0) { throw new IllegalArgumentException("The scale must be a positive integer or zero"); } BigDecimal b = new BigDecimal(Double.toString(num)); return b.setScale(scale, BigDecimal.ROUND_HALF_UP).doubleValue(); } public static String round(String num, int scale) { if (scale < 0) { throw new IllegalArgumentException( "The scale must be a positive integer or zero"); } BigDecimal b = new BigDecimal(num); return b.setScale(scale, BigDecimal.ROUND_HALF_UP).toString(); } public static String remainder(String num1, String num2, int scale) { if (scale < 0) { throw new IllegalArgumentException( "The scale must be a positive integer or zero"); } BigDecimal b1 = new BigDecimal(num1); BigDecimal b2 = new BigDecimal(num2); return b1.remainder(b2).setScale(scale, BigDecimal.ROUND_HALF_UP).toString(); } public static BigDecimal remainder(BigDecimal num1, BigDecimal num2, int scale) { if (scale < 0) { throw new IllegalArgumentException( "The scale must be a positive integer or zero"); } return num1.remainder(num2).setScale(scale, BigDecimal.ROUND_HALF_UP); } public static boolean compare(String num1, String num2) { BigDecimal b1 = new BigDecimal(num1); BigDecimal b2 = new BigDecimal(num2); int bj = b1.compareTo(b2); boolean res; if (bj > 0) res = true; else res = false; return res; }}
int res = a.compareTo(b);res = -1 ,  表示 ab

 

  

  以上就是Java BigDecimal 精确计算()的全部内容,想要了解更多Java BigDecimal 精确计算()相关的内容,请持续关注我们。

以上就是花匠人为你整理的Java BigDecimal 精确计算(),如果你还想了解更多生活百科知识,请持续关注花匠人。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: