現在のdouble値を正確に丸めたいので、次のようになります...
val = 0.01618
Math.Round(val,2)
0.02
(現在、このように与えています)。
0.01
(私はこのようにしたい)。
Math.Floor()
あなたが探しているものだと思います。小数点以下2桁に四捨五入する場合は、を実行できますMath.Floor(v*100)/100
。Floor
小数点以下の桁数がかかる過負荷がないのはなぜだろうか。
必要なのはMath.Floor()または同様のものです(c#は使用しないでください、申し訳ありません)。これは常に切り捨てられます。Math.Round()は、ここで説明されているように動作します。
これにより、必要な場所が切り捨てられます。
Math.Round(val - 0.005, 2)
次のように、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)));
}