0

double 値を 2 つの精度値に丸めようとしました。Date Format を使用して取得しましたが、文字列になっています。日付形式を使用せずに double 値を精度に丸める方法。

4

2 に答える 2

1

ここに例があります

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

    double kilobytes = 1205.6358;

    System.out.println("kilobytes : " + kilobytes);

    double newKB = Math.round(kilobytes*100.0)/100.0;
    System.out.println("kilobytes (Math.round) : " + newKB);

    DecimalFormat df = new DecimalFormat("###.##");
    System.out.println("kilobytes (DecimalFormat) : " + df.format(kilobytes));
    }
}

出力:

kilobytes : 1205.6358
kilobytes (Math.round) : 1205.64
kilobytes (DecimalFormat) : 1205.64
于 2013-10-16T07:20:26.020 に答える
0

EJP と Leonidos がコメントで述べたように、適切な丸めはプリミティブではなくBigDecimalクラスを介して実行されます。double

丸めモードを慎重に選択してください。Banker's Roundingは同点 (分割も含む) を解消する一般的な方法ですが、最適な方法は目的と状況によって異なります。

double d = 7.345;
java.math.BigDecimal bigDecimal = new java.math.BigDecimal(d).setScale(2, java.math.RoundingMode.HALF_EVEN);
System.out.println("My big decimal is: " + bigDecimal ); // Outputs: 7.34 (using Banker's Rounding)

参照: Java で数値を小数点以下 n 桁に丸める方法

于 2013-10-16T09:47:09.983 に答える