Java中 BigDecimal max 和 min 怎么比较获取较大值与较小值
BigDecimal的max和min方法基于数值大小直接返回较大或较小对象的引用,比较时自动对齐不同精度,不接受null参数(否则抛NullPointerException)。内部调用compareTo()实现,不创建新对象,需注意null安全处理与精度无关的数值比较。
先说个基础:BigDecimal的max和min方法,直接返回数值较大或较小的那个对象引用。它俩比较的是真实数值大小,不是字符串,精度不同时会自动对齐,而且不接受null参数。

BigDecimal 的 max 和 min 方法,说白了就是直接返回较大的或较小的那个值,省去了手动比较的麻烦。它们是实例方法,调用时传另一个 BigDecimal 对象进去就行。内部比较的是数值大小(不是字符串),结果要么是原对象,要么是参数对象的引用,不会创建新对象。前提是两者精度一致;如果精度不同,它会先对齐精度再比较。
先说说它俩的基本用法
这两个都是 BigDecimal 类的实例方法,语法挺直观的:
a.max(b)返回a和b中数值更大的那个a.min(b)返回a和b中数值更小的那个- 返回值类型还是
BigDecimal,可以链式调用或者赋值给变量
注意,这里比较的是数值大小,不是字符串
max/min 比较的是真实数值大小,跟 compareTo() 一样,不受 scale(小数位数)影响:
new BigDecimal("1.0").max(new BigDecimal("0.999"))结果是1.0(不是按字符串 "1.0" > "0.999" 判定的)new BigDecimal("2").min(new BigDecimal("1.50"))结果是1.50(因为数值 1.5 小于 2)- 底层用的是
compareTo(),所以如果你传 null 进去,直接就是 NullPointerException
一些容易踩的坑,得注意
实际用起来,有些细节容易忽略,结果可能跟预期不一样:
- 别用
equals()判断相等性后再调max/min——max(a, a)肯定返回a,但equals()可能因为 scale 不同返回 false - 如果需要统一 scale 再比较(比如展示一致性),建议先用
setScale(scale, roundingMode)规范化,然后再调max/min - 多个值求最值?可以用 Stream:
Stream.of(a, b, c).max(BigDecimal::compareTo).orElse(null)
null 安全处理这步不能省
max 和 min 不接受 null 参数,运行时直接抛异常。建议提前做校验:
- 用
Objects.requireNonNull(a).max(Objects.requireNonNull(b))明确失败点 - 或者封装个工具方法,比如:
static BigDecimal safeMax(BigDecimal a, BigDecimal b) { return a == null ? b : b == null ? a : a.max(b); } - 业务里常配合 Optional 或默认值使用,避免空指针
WPS Office是一款面向macOS用户的综合办公套件,将文字处理、电子表格、演示文稿、PDF工具、模板与云协作整合在同一应用中。它兼容常见Microsoft Office格式,支持Intel及Apple芯片Mac,基础功能可免费使用,
Shapr3D是一款面向工业设计、机械工程、建筑概念和三维打印工作流的CAD软件。Mac版采用Parasolid建模内核,支持草图约束、实体建模、工程图、可视化渲染及常见CAD格式交换,并可通过账户在多台设备之间同步项目。
REAPER是Cockos开发的数字音频工作站,提供多轨音频与MIDI录制、剪辑、处理、混音和母带制作工具。Mac版兼容Intel与Apple芯片,支持AU、VST、VST3、CLAP等插件格式,并提供高度可定制的工作流程。
Adobe Photoshop 是面向摄影师、设计师和内容创作者的专业图像处理工具,可在 Windows 上完成照片修饰、选区抠图、图层合成、文字排版、绘画及生成式编辑。软件采用订阅授权,由 Creative Cloud 管理安装、更新与许
Adobe InDesign 是面向印刷与数字出版的专业页面排版工具,可制作书籍、杂志、宣传册、海报、交互式 PDF 和电子书。它提供精细的文字样式、多页面管理、印前检查及多格式输出能力,并能与 Photoshop、Illustrator
Adobe Illustrator 是用于绘制矢量图形、插画、图标、徽标和版式的专业设计工具。它以路径和锚点为核心,作品放大后仍能保持清晰,并提供画板、文字、渐变、图像描摹及精确变换等功能,适合品牌视觉、印刷物料、数字界面和商业插画创作。













