当前位置: 首页 > ds >正文

Java类:BigDecimal 的用法:乘法

BigDecimal乘法 使用非常简单,相比除法,乘法不需要设置精度或舍入模式,可以直接使用 multiply() 方法完成。


BigDecimal 乘法的基本用法

🔧 方法签名:

public BigDecimal multiply(BigDecimal multiplicand)
  • multiplicand:要相乘的另一个 BigDecimal 值。
  • 返回一个新的 BigDecimal 对象,表示两个数的乘积。

✅ 示例代码:

import java.math.BigDecimal;public class BigDecimalMultiplyExample {public static void main(String[] args) {BigDecimal a = new BigDecimal("10.5");BigDecimal b = new BigDecimal("3.2");BigDecimal result = a.multiply(b);System.out.println("乘积是:" + result);  // 输出:33.600}
}

✅ 输出说明:

  • BigDecimal 会保留所有精度,所以 10.5 × 3.2 = 33.6,但输出为 33.600,是因为 BigDecimal 保留了原始精度信息。
  • 如果你希望格式化输出(比如保留两位小数),可以使用 .setScale() 方法:
BigDecimal formatted = result.setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.println("格式化后:" + formatted);  // 输出:33.60

✅ 更多注意事项

项目说明
✅ 推荐构造方式使用字符串构造 new BigDecimal("10.5"),避免 double 精度问题
❌ 不推荐构造方式new BigDecimal(0.1) 会导致精度误差,建议写成 new BigDecimal("0.1")
🧮 不需要设置精度乘法不会像除法一样抛出异常,直接返回完整精度结果
📦 不可变对象BigDecimal 是不可变类,每次操作都会返回新对象

✅ 示例:乘法 + 设置精度

BigDecimal a = new BigDecimal("5.123");
BigDecimal b = new BigDecimal("2.456");BigDecimal product = a.multiply(b);  // 得到完整乘积
BigDecimal result = product.setScale(2, RoundingMode.HALF_UP); // 保留两位小数System.out.println("乘积保留两位小数:" + result);  // 输出:12.58

✅ 小贴士:Java 9 以后推荐使用 RoundingMode 枚举

import java.math.RoundingMode;// 推荐写法(Java 9+)
product.setScale(2, RoundingMode.HALF_UP);// 不推荐写法(旧版写法,已过时但还能用)
product.setScale(2, BigDecimal.ROUND_HALF_UP);

✅ 总结

操作方法
乘法multiply()
设置精度setScale(scale, roundingMode)
推荐舍入方式RoundingMode.HALF_UP(四舍五入)

http://www.xdnf.cn/news/15837.html

相关文章:

  • IDEA 2020.1版本起下载JDK
  • Logback 配置的利器:深入理解<property>与<variable>
  • vue2 面试题及详细答案150道(21 - 40)
  • 闭包的定义和应用场景
  • Rust实战:高效对接Postman API
  • Spring中的SpEL是什么
  • Springboot3整合Elasticsearch8(elasticsearch-java)
  • [2025CVPR-目标检测方向]FSHNet:一种用于3D物体检测的全稀疏混合网络。
  • Hive数据仓库工具
  • 什么是高光谱相机,它与数码相机有什么区别?
  • 相机光学(五十)——Depth AF
  • RTKLIB读取星历文件,观测数据
  • 解决Flutter运行android提示Deprecated imperative apply of Flutter‘s Gradle plugins
  • 电解电容串联均衡电阻计算
  • 模板初阶和C++内存管理
  • 功能安全之BIST的基本原理
  • 第7天 | openGauss中一个数据库中可以创建多个模式
  • 6月零售数据超预期引发市场波动:基于AI多因子模型的黄金价格解析
  • Axios泛型参数解析与使用指南
  • 当系统盘快满时,可以删除哪些数据
  • 排序【各种题型+对应LeetCode习题练习】
  • 如何阅读Spring源码
  • 【LVGL】Linux LVGL程序几十分钟后UI卡死
  • effective python 条款11 学会对序列做切片
  • Onload 用户指南 (UG1586)-笔记
  • 【机器学习】安装Jupyter及基本操作
  • 内存泄漏系列专题分析之二十九:高通相机CamX--Android通用GPU内存分配和释放原理
  • 虚拟商品自动化实践:闲鱼订单防漏发与模板化管理的技术解析
  • JVM常用运行时参数说明
  • 【C# in .NET】17. 探秘类成员-构造函数与析构函数:对象生命周期管理