2

重複の可能性:
JavaのtoPrecision()に相当するものはありますか?

数値を小数点以下2桁に制限することを想定したメソッドを作成しましたが、その方法では、数値を小数点以下2桁に表示し、その後ゼロを表示します。

また、以下の数値計算から、数値が誤って丸められていることがわかります。数字はである必要があります478.03 129.06 348.97

ここで何が問題になっていますか?

PS。私は擬似コードをフォローしているだけで、それ以上のものをインポートすることはできませんimport java.io.*;

私の出力:

Employee's Last Name: dfsdfsdf
Employment Status (F or P): p
Hourly Pay Rate: 8.35
Hours Worked: 51.5
-------------------------------------------------------
Name    Status      Gross   Taxes   Net
dfsdfsdf    Part Time       478.040000  129.070000  348.970000

すべてのデータを入力し、それを出力しようとする私のコード:

private static void outputData(String name, char status, double pay) 
{
    if (status == "p".charAt(0))
    {
        System.out.println("-------------------------------------------------------");
        System.out.println("Name\tStatus\t\tGross\tTaxes\tNet");
        System.out.printf("%s\tPart Time\t\t%f\t%f\t%f\n\n", 
                name, 
                roundDouble(pay), 
                roundDouble(calculateTaxes(pay)), 
                roundDouble(pay - calculateTaxes(pay)));
    }
    else if (status == "f".charAt(0))
    {
        System.out.println("-------------------------------------------------------");
    }
}

変換を行う必要があるメソッドであるその他のコード:

private static double roundDouble(double number) 
{
    return Double.parseDouble(String.format("%.2f", number));
}
4

2 に答える 2

3

NumberFormat代わりに試すことができます

double value = 478.03123456789;
NumberFormat nf = NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(2);

System.out.println(nf.format(value));

出力478.03

ps-元の値も持っていると役立つかもしれません;)

于 2012-09-21T06:54:02.903 に答える
1

このようにしてみてください:

private static double roundDouble(double number) 
{
    return java.lang.Math.round((number * 100) / 100.0));
}
于 2012-09-21T06:58:52.527 に答える