1

現在のdouble値を正確に丸めたいので、次のようになります...

val = 0.01618

Math.Round(val,2) 

0.02(現在、このように与えています)。

0.01(私はこのようにしたい)。

4

4 に答える 4

3

Math.Floor()あなたが探しているものだと思います。小数点以下2桁に四捨五入する場合は、を実行できますMath.Floor(v*100)/100Floor小数点以下の桁数がかかる過負荷がないのはなぜだろうか。

于 2012-08-27T08:13:44.327 に答える
1

必要なのはMath.Floor()または同様のものです(c#は使用しないでください、申し訳ありません)。これは常に切り捨てられます。Math.Round()は、ここで説明されているように動作します。

于 2012-08-27T08:15:36.413 に答える
0

これにより、必要な場所が切り捨てられます。

Math.Round(val - 0.005, 2) 
于 2012-08-27T08:27:03.283 に答える
0

次のように、Math.Floorを使用して希望の値に設定してから、Math.Roundを使用して小数点以下2桁に設定できます。

// Returns double that is rounded and floored
double GetRoundedFloorNumber(double number, int rounding)
{
    return ((Math.Floor(number * (Math.Pow(10, rounding))) / Math.Pow(10, rounding)));

}

したがって、この関数を呼び出すと、正しい番号が返されます。

コード例:

    static void Main(string[] args)
    {
        // Writes 0.016 to the screen
        Console.WriteLine(GetRoundedFloorNumber(0.01618, 3));
        Console.ReadLine();
    }

    static double GetRoundedFloorNumber(double number, int rounding)
    {
        return ((Math.Floor(number * (Math.Pow(10, rounding))) / Math.Pow(10, rounding)));

    }
于 2012-08-27T08:58:59.100 に答える