可能性のある複製:
C#で数値を小数点以下2桁に丸める方法
変数を小数点以下2桁に丸める方法に興味があります。以下の例では、ボーナスは通常、小数点以下4桁の数字です。給与変数が常に小数点以下2桁に丸められるようにする方法はありますか?
pay = 200 + bonus;
Console.WriteLine(pay);
Math.Round を使用して、小数点以下の桁数を指定します。
Math.Round(pay,2);
倍精度浮動小数点値を指定された小数桁数に丸めます。
または Math.Roundメソッド(10進数、Int32)
小数を指定された小数桁数に丸めます。
_Math.Round
_ の形式を使用する必要があります。 MidpointRounding
値を指定しない限り、_Math.Round
_はデフォルトで銀行家の丸め(最も近い偶数への丸め)になることに注意してください。銀行の丸めを使用したくない場合は、次のように Math.Round(decimal d, int decimals, MidpointRounding mode)
を使用する必要があります。
_Math.Round(pay, 2, MidpointRounding.AwayFromZero); // .005 rounds up to 0.01
Math.Round(pay, 2, MidpointRounding.ToEven); // .005 rounds to nearest even (0.00)
Math.Round(pay, 2); // Defaults to MidpointRounding.ToEven
_
decimal pay = 1.994444M;
Math.Round(pay , 2);
結果を丸め、string.Format
を使用して、次のように精度を設定できます。
decimal pay = 200.5555m;
pay = Math.Round(pay + bonus, 2);
string payAsString = string.Format("{0:0.00}", pay);
System.Math.Roundを使用して、小数値を指定された小数桁数に丸めます。
var pay = 200 + bonus;
pay = System.Math.Round(pay, 2);
Console.WriteLine(pay);
MSDNリファレンス:
必ず数値を指定してください。通常は倍精度が使用されます。 Math.Roundは1〜3個の引数を取り、最初の引数は丸めたい変数、2番目は小数点以下の桁数、3番目は丸めのタイプです。
double pay = 200 + bonus;
double pay = Math.Round(pay);
// Rounds to nearest even number, rounding 0.5 will round "down" to zero because zero is even
double pay = Math.Round(pay, 2, MidpointRounding.ToEven);
// Rounds up to nearest number
double pay = Math.Round(pay, 2, MidpointRounding.AwayFromZero);
Round
roundsであることに注意してください。
だから(あなたの業界でそれが重要かどうかはわかりませんが):
float a = 12.345f;
Math.Round(a,2);
//result:12,35, and NOT 12.34 !
あなたのケースをより正確にするために、次のようなことができます:
int aInt = (int)(a*100);
float aFloat= aInt /100.0f;
//result:12,34
Console.WriteLine(decimal.Round(pay,2));