可能的重复项:
如何在 Java 中将数字四舍五入到小数点后 n 位
我有一个双精度值,例如"1234.9678"。 我只想返回一个小数,没有四舍五入或上限。
我使用了这种方式,但它返回"1234.96"
public double roundTwoDecimals(double d) {
DecimalFormat twoDForm = new DecimalFormat("#.##");
return Double.valueOf(twoDForm.format(d)); }
我只想要"1234.9",
我什至用过这种方式...但是没有运气...谁能帮忙?
double d = 1234.9678;
int decimalPlace = 1;
BigDecimal bd = new BigDecimal( Double.toString(d) );
bd = bd.setScale( decimalPlace, BigDecimal.ROUND_HALF_UP );
System.out.println( bd.doubleValue() );
public double roundTwoDecimals(double d)
具有此签名的方法都不可能按照您的要求进行操作。有关反例,请参见此处。
浮点变量没有小数位,因此不能舍入到特定的小数位数。他们有二元位置。
您必须使用十进制基数。在 Java 中,这意味着使用 DecimalFormat
转换为字符串,或BigDecimal
转换为十进制基数的数字,在十进制基数中四舍五入,然后将其转换为字符串,该字符串也将是十进制基数。
这意味着您必须将方法的签名更改为:
public BigDecimal roundTwoDecimals(double d)
或:
public String roundTwoDecimals(double d)