double 値を 2 つの精度値に丸めようとしました。Date Format を使用して取得しましたが、文字列になっています。日付形式を使用せずに double 値を精度に丸める方法。
1077 次
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)
于 2013-10-16T09:47:09.983 に答える