已弃用的 BigDecimal.setScale(int, int) 和 RoundingMode 枚举的构造函数

我正在尝试使用以下方式指定 BigDecimal 值的精度:.但是,编译器告诉我,这已被弃用。new BigDecimal(12.99).setScale(2, BigDecimal.ROUND_HALF_EVENsetScale(int, int)

当我尝试使用 RoundingMode 枚举时,它告诉我枚举可能尚未初始化。如何正确使用枚举来实例化大数?setScale(int, RoundingMode)

谢谢!


答案 1

根据文档,自 Java 1.5 以来,一直不推荐使用 枚举:setScale(int, int)

新方法应优先于此传统方法使用。setScale(int, RoundingMode)

它最终在Java 9中被弃用。

您应该改为调用 setScale(2, RoundingMode.HALF_EVEN)。它使错误检查变得更加简单,因为您无法传入未定义的 ,但您当然可以在未定义的整数模式下传递。enum


答案 2

您不应“实例化”枚举,而应使用其常量。您是否尝试过:

new BigDecimal(12.99).setScale(2, RoundingMode.HALF_EVEN);

请注意,您还可以使用字符串构造函数:

new BigDecimal("12.99");