Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在不进行任何舍入的情况下,最多保留3位小数_Java_String_Floating Point_Double_Bigdecimal - Fatal编程技术网

Java 在不进行任何舍入的情况下,最多保留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

我有一个double,我只想保留小数点后3位,但不进行任何舍入。
例如,
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);