我试图将大的十进制值四舍五入到小数点后两位.

我在用

BigDecimal rounded = value.round(new MathContext(2, RoundingMode.CEILING));
logger.trace("rounded {} to {}", value, rounded);

但它并没有始终如一地满足我的需求:

rounded 0.819 to 0.82
rounded 1.092 to 1.1
rounded 1.365 to 1.4 // should be 1.37
rounded 2.730 to 2.8 // should be 2.74
rounded 0.819 to 0.82

我不关心有效数字,我只需要两位小数.我该如何使用BigDecimal?或者还有其他更适合这个的类/库吗?

推荐答案

value = value.setScale(2, RoundingMode.CEILING)

Java相关问答推荐

是否需要关闭Executors返回的执行器.newVirtualThreadPerTaskExecutor()?

Java应用程序崩溃时试图读取联系人从电话

Cucumber TestNG Assert失败,出现java. lang. Numbercycle异常

不推荐使用的Environment.getExternalStorageDirectory().getAbsolutePath()返回的值不同于新的getExternalFilesDir(空)?

Hibernate EmptyInterceptor可以工作,但不能拦截器

Com.example.service.QuestionService中的构造函数的参数0需要找不到的类型为';com.example.Dao.QuestionDao;的Bean

如何在 spring 数据的MongoDB派生查询方法中使用$EXISTS

try 从REST API返回对象列表时出错

在VS代码中,如何启用Java Main函数的&Q;Run|DEBUG&Q;代码?

SpringBoot:在条件{Variable}.isBlank/{Variable}.isEmpty不起作用的情况下进行路径变量验证

在使用具有不同成本的谓词调用allMatch之前对Java流进行排序会带来什么好处吗?

何时调用密封层次 struct 的switch 中的默认情况

泛型与泛型问题的完美解决方案?

在不使用instanceof或强制转换的情况下从父类变量调用子类方法

如何使用WebEnvironment.RANDOM_PORT获得第二个随机端口?

无限递归Java问题

在WHILE()循环初始化部分中声明和初始化变量的Java语法?

在Spring Boot中使用咖啡因进行缓存

Java中的一个错误';s stdlib SocksSocketImpl?

将Optionals/null安全添加到嵌套的flatMap/流