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 data.setScale(2, RoundingMode.HALF_UP);
先是通过方法名称确定返回值的类型(BigDecimal、Double、String),然后大量的重载方法,用“穷举法”把BigDecimal、Double、String、Integer四种类型进行各种形式的两两组合,进行加减乘除运算,运算时非...
- `setScale(2, BigDecimal.ROUND_HALF_UP)` 表示将该`BigDecimal`对象的小数点后保留2位,并采用四舍五入的方式处理第三位及以后的数字。 - 最终得到的`double f1`即为保留两位小数的结果。 #### 方法二:使用`...
Java实用工具类(后端开发必备), GZIPUtil、HttpUtil、HttpUtil、NetworkUtil、RegexUtils、PropertiesUtil、DateUtil、BigDecimalUtil、EmailUtil、FastJsonUtil、ProtobufUtil等等
row.createCell(1).setCellValue(BigDecimalUtil.outputConvert(v.getAmount())); row.createCell(2).setCellValue(v.getCounts()); row.createCell(3).setCellValue(v.getGroups()); i++; } ...
这个 `BigDeclimal对大数据开根号Util` 可能包含了实现以上逻辑的类或方法,帮助开发者处理大数据的平方根计算,确保结果的精度和正确性。通过这样的工具,开发者可以在金融、科学计算等领域实现精确的数学运算,...
除了上述重点功能外,`Util.java`还可能包含了其他一些常用的操作,比如正则表达式匹配(通过`Pattern`类)、数学运算(通过`BigDecimal`类)以及对`List`集合的处理等。这些工具方法为开发者提供了便利,避免了重复...
首先,ArrayList是ArrayList类的实例,它是Java.util包中的一个动态数组。它允许我们在运行时动态地添加、删除和修改元素,提供了比传统数组更灵活的管理方式。ArrayList的主要操作包括添加元素(add)、获取元素(get)...
此外,Java 8还引入了新的日期和时间API(java.time),替代了原有的java.util.Date和Calendar类,提供更强大、更易用的时间日期处理功能。 在多线程方面,Java 8改进了Fork/Join框架,使得并行计算更加容易。...
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....
import java.util.Date; public class User { @JsonFormat(pattern = "yyyy-MM-dd") private Date birthDate; // ... } ``` `pattern`属性可以设置各种日期时间格式,遵循Java的日期时间格式规范。此外,`@Json...
通过启用 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....
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 ...
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; // 遍历字符串中的每个...
4. **`java.math.BigDecimal`**: 当需要进行精确的浮点数运算时,我们通常会使用`BigDecimal`类,因为它避免了浮点数运算的精度问题。 5. **`java.util.Random`**: 提供随机数生成功能,常用于测试、游戏或模拟等...
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 判断对象是否为空.如String,Character,Object[]
MachineLearingInAction ... ... 导入org.apache.poi.hssf.usermodel.HSSFWorkbook; 导入org.apache.poi.ss.usermodel.Workbook;... 导入java.math.BigDecimal; 导入java.util.ArrayList; 导入java.util.List; / **