`
雨中伞
  • 浏览: 43329 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

BigDecimalUtil

阅读更多
package com.gcg.spring.test;

import java.math.BigDecimal;

public class Arith {
	// 默认除法运算精度
	private static final int DEF_DIV_SCALE = 10;

	// 这个类不能实例化
	private Arith() {

	}

	/** */
	/**
	 * 提供精确的加法运算。
	 * 
	 * @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();
	}

	/** */
	/**
	 * 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到 小数点以后10位,以后的数字四舍五入。
	 * 
	 * @param v1
	 *            被除数
	 * @param v2
	 *            除数
	 * @return 两个参数的商
	 */
	public static double div(double v1, double v2) {
		return div(v1, v2, DEF_DIV_SCALE);
	}

	/** */
	/**
	 * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指 定精度,以后的数字四舍五入。
	 * 
	 * @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 zero");
		}
		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 BigDecimalUtil 保留两位小数 去掉小数位无效0并转换为String,nullToZero

    java BigDecimalUtil 保留两位小数 去掉小数位无效0并转换为String,nullToZero data.setScale(2, RoundingMode.HALF_UP);

    Java保留两位小数方法大全

    - `setScale(2, BigDecimal.ROUND_HALF_UP)` 表示将该`BigDecimal`对象的小数点后保留2位,并采用四舍五入的方式处理第三位及以后的数字。 - 最终得到的`double f1`即为保留两位小数的结果。 #### 方法二:使用`...

    Java实用工具类(后端开发必备)

    Java实用工具类(后端开发必备), GZIPUtil、HttpUtil、HttpUtil、NetworkUtil、RegexUtils、PropertiesUtil、DateUtil、BigDecimalUtil、EmailUtil、FastJsonUtil、ProtobufUtil等等

    vue+springmvc导出excel数据的实现代码

    row.createCell(1).setCellValue(BigDecimalUtil.outputConvert(v.getAmount())); row.createCell(2).setCellValue(v.getCounts()); row.createCell(3).setCellValue(v.getGroups()); i++; } ...

    BigDeclimal对大数据开根号Util

    这个 `BigDeclimal对大数据开根号Util` 可能包含了实现以上逻辑的类或方法,帮助开发者处理大数据的平方根计算,确保结果的精度和正确性。通过这样的工具,开发者可以在金融、科学计算等领域实现精确的数学运算,...

    Util.java 一些公共的Java方法

    除了上述重点功能外,`Util.java`还可能包含了其他一些常用的操作,比如正则表达式匹配(通过`Pattern`类)、数学运算(通过`BigDecimal`类)以及对`List`集合的处理等。这些工具方法为开发者提供了便利,避免了重复...

    036-sum-arraylist-bigdecimals-java8

    首先,ArrayList是ArrayList类的实例,它是Java.util包中的一个动态数组。它允许我们在运行时动态地添加、删除和修改元素,提供了比传统数组更灵活的管理方式。ArrayList的主要操作包括添加元素(add)、获取元素(get)...

    Java API帮助文档中文版1.8版和官方中文1.6版

    此外,Java 8还引入了新的日期和时间API(java.time),替代了原有的java.util.Date和Calendar类,提供更强大、更易用的时间日期处理功能。 在多线程方面,Java 8改进了Fork/Join框架,使得并行计算更加容易。...

    @JsonFormat的使用jackson-annotations

    import java.util.Date; public class User { @JsonFormat(pattern = "yyyy-MM-dd") private Date birthDate; // ... } ``` `pattern`属性可以设置各种日期时间格式,遵循Java的日期时间格式规范。此外,`@Json...

    计算器代吗

    import java.math.BigDecimal; import java.util.regex.Pattern; import com.android.xiong.gridlayoutTest.R.id; import android.os.Bundle; import android.app.Activity; import android.view.Menu; ...

    精确计算工具类

    * @Package com.uxun.pay.util * @Description: TODO(用一句话描述该文件做什么) * @author daiw * @date 2016-1-5 上午9:05:34 * @version V1.0 */ package com.xwtec.commonutil; import java.math....

    jackson json 转 map 数值科学计数法的问题解决.docx

    通过启用 DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS 选项,可以将 JSON 中的浮点数转换为 Java 的 BigDecimal 类型,从而避免科学计数法的表示方式。 下面是一个示例代码,演示如何使用 ObjectMapper 将 ...

    不同中奖概率产生中奖人

    Java提供了`java.util.Random`类用于生成随机数,我们可以结合`BigDecimal`类进行精确的概率计算。以下是一个简单的实现: ```java import java.math.BigDecimal; import java.util.ArrayList; import java.util....

    servlet分页代码示例

    import java.util.Date; /** * Created by lx_sunwei on 14-1-6. */public class UserData {  /** * EMP表中的数据属性 */ private String ename; private String job; private BigDecimal empno; private ...

    创建一个类(DoubleConverter),该类的作用是将一个字符串的值转换成浮点型(double)数值。

    import java.util.*; public class DoubleConverter { public void convertToDouble(String sNumber) { double number = 0.0; double temp = 0.0; int j = 0; boolean flag = true; // 遍历字符串中的每个...

    java开发过程中常用的工具类

    4. **`java.math.BigDecimal`**: 当需要进行精确的浮点数运算时,我们通常会使用`BigDecimal`类,因为它避免了浮点数运算的精度问题。 5. **`java.util.Random`**: 提供随机数生成功能,常用于测试、游戏或模拟等...

    Java用正则对字符串进行处理并判断是否能转为数字

    import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @author: gznc_pcc * @date:2018年6月1日 10:50:38 * @version : * */ class Main { public static void main(String[] args) { ...

    java 对象是否为空的判断

    java 判断对象是否为空.如String,Character,Object[]

    MachineLearingInAction:机器学习源代码-机器学习

    MachineLearingInAction ... ... 导入org.apache.poi.hssf.usermodel.HSSFWorkbook; 导入org.apache.poi.ss.usermodel.Workbook;... 导入java.math.BigDecimal; 导入java.util.ArrayList; 导入java.util.List; / **

    JAVA_API1.6文档(中文)

    java.math 提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。 java.net 为实现网络应用程序提供类。 java.nio 定义作为数据容器的缓冲区,并提供其他 NIO 包的概述。 java.nio....

Global site tag (gtag.js) - Google Analytics