2012-03-19 19 views
2

可能性の重複:
Round a double to 2 significant figures after decimal point丸めダブル - 最小小数点以下の桁数

以下のコードは、それが35.0になり

import java.text.DecimalFormat; 

public class Test { 
public static void main(String[] args){ 

    double x = roundTwoDecimals(35.0000); 
    System.out.println(x); 
} 

public static double roundTwoDecimals(double d) { 
    DecimalFormat twoDForm = new DecimalFormat("#.00"); 
    twoDForm.setMinimumFractionDigits(2); 
    return Double.valueOf(twoDForm.format(d)); 
} 
} 

に動作します。 最小小数点以下の桁数を強制する方法は? 出力が35.00

+5

末尾のゼロの数は 'double'のプロパティではなく、' String'表現のプロパティです。 –

+0

http://stackoverflow.com/a/7593617/446885 – Shahzeb

+0

文字列に変換せずに行う方法はありますか? –

答えて

3

戻り値roundTwoDecimals()の戻り値がdoubleで、機能内で行う書式設定が破棄されるため、期待どおりに動作しません。必要なものを実現するには、Stringの表現をroundTwoDecimals()から返すことを検討してください。

0

フォーマット番号をdoubleに戻すと、すべての書式変更が失われます。関数を次のように変更してください:

public static String roundTwoDecimals(double d) { 
    DecimalFormat twoDForm = new DecimalFormat("#.00"); 
    return twoDForm.format(d); 
} 

EDIT:正しいですが、「#.00」は正しいです。

+0

実際には、 '#。##'は小数点を任意にしますが、これは彼が望むようには見えません。 'String'を返すアドバイスは、関連する部分です。 – VeeArr

関連する問題