【Java】BigDecimal实现加减乘除运算代码
发布时间 - 2026-01-10 23:08:34 点击率:次java.math.BigDecimal

BigDecimal一共有4个够造方法,让我先来看看其中的两种用法:
第一种:BigDecimal(double val)
Translates a double into a BigDecimal.
第二种:BigDecimal(String val)
Translates the String repre sentation of a BigDecimal into a BigDecimal.
使用BigDecimal要用String来够造,要做一个加法运算,需要先将两个浮点数转为String,然后够造成BigDecimal,在其中一个上调用add方法,传入另一个作为参数,然后把运算的结果(BigDecimal)再转换为浮点数。
public static double add(double v1,double v2) public static double sub(double v1,double v2) public static double mul(double v1,double v2) public static double div(double v1,double v2) public static double div(double v1,double v2,int scale) public static double round(double v,int scale)
工具类:Arith
/**
* 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精 确的浮点数运算,包括加减乘除和四舍五入。
*/
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();
}
};
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# bigdecimal
# 加减乘除
# bigdecimal运算
# bigdecimal的加减乘除
# Java中BigDecimal的加减乘除、比较大小与使用注意事项
# java中BigDecimal进行加减乘除的基本用法
# 使用BigDecimal进行精确运算(实现加减乘除运算)
# BigDecimal的加减乘除计算方法详解
# 四舍五入
# 浮点数
# 几位
# 让我
# 两种
# 要做
# 要用
# 其中一个
# 转换为
# 不能够
# 先将
# 先来
# 第二种
# 第一种
# 大家多多
# public
# add
# brush
# pre
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)
jQuery 常见小例汇总
北京的网站制作公司有哪些,哪个视频网站最好?
Laravel怎么为数据库表字段添加索引以优化查询
零服务器AI建站解决方案:快速部署与云端平台低成本实践
Python3.6正式版新特性预览
Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】
Laravel如何实现API速率限制?(Rate Limiting教程)
Laravel如何实现用户注册和登录?(Auth脚手架指南)
无锡营销型网站制作公司,无锡网选车牌流程?
php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
Android自定义控件实现温度旋转按钮效果
Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑
Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】
清除minerd进程的简单方法
如何批量查询域名的建站时间记录?
如何在Windows 2008云服务器安全搭建网站?
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
网站页面设计需要考虑到这些问题
活动邀请函制作网站有哪些,活动邀请函文案?
如何获取上海专业网站定制建站电话?
Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)
Python文件操作最佳实践_稳定性说明【指导】
Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置
Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
网站制作免费,什么网站能看正片电影?
Laravel如何使用Eloquent进行子查询
微信h5制作网站有哪些,免费微信H5页面制作工具?
如何为不同团队 ID 动态生成多个独立按钮
如何在Tomcat中配置并部署网站项目?
JS实现鼠标移上去显示图片或微信二维码
Laravel distinct去重查询_Laravel Eloquent去重方法
如何快速搭建高效服务器建站系统?
如何快速使用云服务器搭建个人网站?
高端企业智能建站程序:SEO优化与响应式模板定制开发
千库网官网入口推荐 千库网设计创意平台入口
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程
Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验
node.js报错:Cannot find module 'ejs'的解决办法
微信小程序 五星评分(包括半颗星评分)实例代码
Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】
Windows Hello人脸识别突然无法使用
如何在阿里云完成域名注册与建站?
Laravel如何使用Telescope进行调试?(安装和使用教程)

