BigDecimal.setScale(int,int)和RoundingMode枚举的不推荐使用的构造函数

Ben*_*nJC 2 java enums bigdecimal deprecated deprecation-warning

我正在尝试使用以下内容指定BigDecimal值的精度:new BigDecimal(12.99).setScale(2, BigDecimal.ROUND_HALF_EVEN.但是,编译器告诉我setScale(int, int)已弃用.

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

谢谢!

Mad*_*ist 7

根据文档,setScale(int, int)Java 1.5首次引入枚举以来,不建议使用,

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

最终在Java 9中弃用了它。

您应该打电话给setScale(2, RoundingMode.HALF_EVEN)。由于您不能传入undefined,所以它使错误检查更加容易,enum但是您当然可以传入undefined的整数模式。


ass*_*ias 5

你不应该"实例化"枚举,而是使用它的常量.你有没有尝试过:

new BigDecimal(12.99).setScale(2, RoundingMode.HALF_EVEN);
Run Code Online (Sandbox Code Playgroud)

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

new BigDecimal("12.99");
Run Code Online (Sandbox Code Playgroud)