java - 不进行任何舍入,最多保留 3 位小数

标签 java string floating-point double bigdecimal

我有一个 double ,我只想保留 3 个小数位,但应用任何舍入。
例如。 92.36699 应为 92.366
我尝试了以下方法:

DecimalFormat nf= new DecimalFormat("#0.000");  
String number = nf.format(originalNumber);  

但这会导致92.367
我怎样才能做我需要的事情?

最佳答案

这不是“无舍入”,而是 DOWN rounding 。简单set the roundingMode .

DecimalFormat nf = new DecimalFormat("#0.000");  
nf.setRoundingMode(RoundingMode.DOWN);
String number = nf.format(originalNumber);  

请注意 FLOORDOWN 之间的区别 - 仅与负数相关。 FLOOR负无穷大舍入,因此 -92.36699 将变为“-92.367”。

关于java - 不进行任何舍入,最多保留 3 位小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41999696/

相关文章:

java - ./run_timer.sh : no such file or directory

java - KET 测试项目的 swing 导航

php - 字符串函数在 PHP 中是 ASCII 安全的吗?

Javascript 格式 float

java - 如何在 Android 上对 SQLite 的结果进行排序?

java - 字符串引用?

string - Perl:将字符串转换为 Unicode

java - java.lang.Double.toString() 和 java.lang.Double.parseDouble 往返安全吗?

c++ - HSV 转换中的浮点错误

java - 一组随机字符和数字的正则表达式