-6

重複の可能性:
Java で数値を小数点以下 n 桁に丸める方法

"1234.9678" のような Double 値を持っています。四捨五入も天井もせず、小数点以下1桁だけで返したいです。

私はこの方法を使用しましたが、「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() );
4

1 に答える 1

6
public double roundTwoDecimals(double d)

このシグネチャを持つメソッドは、あなたが求めていることを実行できない可能性があります。反例については、こちらを参照してください。

浮動小数点変数には小数点以下の桁数がないため、特定の小数点以下の桁数に丸めることができません。それらにはバイナリの場所があります。

10 進数を使用する必要があります。Java では、これはDecimalFormatString に変換するかBigDecimal、10 進数の数値に変換し、10 進数で丸め、それを String に変換することを意味します。これも 10 進数になります。

これは、メソッドのシグネチャを次のいずれかに変更する必要があることを意味します。

public BigDecimal roundTwoDecimals(double d)

また:

public String roundTwoDecimals(double d)
于 2012-10-17T08:58:51.247 に答える