Java 在不进行任何舍入的情况下,最多保留3位小数
我有一个double,我只想保留小数点后3位,但不进行任何舍入。Java 在不进行任何舍入的情况下,最多保留3位小数,java,string,floating-point,double,bigdecimal,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 我怎样才能做我需要的事?这不是“不舍入”,而是。很简单 注意楼层和向下之间的差异-仅与负数相关楼层向负无穷大方向旋转因此-92.36699将变为“-92.36
例如,
92.36699
应该是92.366
我尝试了以下方法:
DecimalFormat nf= new DecimalFormat("#0.000");
String number = nf.format(originalNumber);
但这会导致92.367
我怎样才能做我需要的事?这不是“不舍入”,而是。很简单 注意
楼层
和向下
之间的差异-仅与负数相关<代码>楼层向负无穷大方向旋转因此-92.36699
将变为“-92.367”。这不是“不舍入”,而是。很简单
注意
楼层
和向下
之间的差异-仅与负数相关<代码>楼层向负无穷大旋转因此-92.36699
将变为“-92.367”。您可以使用整数除法:((originalNumber*1000)/1)/1000.0
您可以使用整数除法:((originalNumber*1000)/1)/1000.0
截断使用RoundingMode是正确的。DOWN
作为RoudingMode。FLOOR
总是向负无穷大方向舍入。@paper1111只是在上面添加了一个注释。默认情况下使用一个圆的公平点。使用RoundingMode可以正确地进行截断。DOWN
作为RoudingMode。FLOOR
总是向负无穷大方向进行舍入。@paper1111只是在这一点上添加注释。默认情况下使用的公平点。
DecimalFormat nf = new DecimalFormat("#0.000");
nf.setRoundingMode(RoundingMode.DOWN);
String number = nf.format(originalNumber);