C#にて、小数点以下の数値を丸める、切り捨て・切り上げ・四捨五入の方法を説明します。
数値がプラスの数とマイナスの数で基本的に処理を分けます。
以下の例はdouble・decimalにて行っています。
小数点以下切捨
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
static public double RoundDown(double val) { if (0.0 < val) { return Math.Floor(val); } else { return Math.Ceiling(val); } } static public decimal RoundDown(decimal val) { if (0.0m < val) { return Math.Floor(val); } else { return Math.Ceiling(val); } } |
小数点以下切り上
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
static public double RoundUp(double val) { if (0.0 < val) { return Math.Ceiling(val); } else { return Math.Floor(val); } } static public decimal RoundUp(decimal val) { if (0.0m < val) { return Math.Ceiling(val); } else { return Math.Floor(val); } } |
小数点以下四捨五入
1 2 3 4 5 6 7 8 9 |
static public double Round(double val) { return Math.Round(val, MidpointRounding.AwayFromZero); } static public decimal Round(decimal val) { return Math.Round(val, MidpointRounding.AwayFromZero); } |
指定桁位置で切り捨・切り上げ・四捨五入
少数点以下切り捨てではなく、小数点x桁以下切り捨てのサンプルです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
// 指定桁位置で切り捨て static public double RoundDown(double val, int digit) { double b; b = Math.Pow(10.0, digit); return ((Omit(val * b) / b)); } // 指定桁位置で切り捨て static public decimal RoundDown(decimal val, int digit) { decimal b; b = (decimal)Math.Pow(10.0, digit); return ((Omit(val * b) / b)); } // 指定桁位置で切り上げ static public double RoundUp(double val, int digit) { double b; b = Math.Pow(10.0, digit); return ((Raise(val * b) / b)); } // 指定桁位置で切り上げ static public decimal RoundUp(decimal val, int digit) { decimal b; b = (decimal)Math.Pow(10.0, digit); return ((Raise(val * b) / b)); } // 指定桁位置で四捨五入 static public double Round(double val, int digit) { double b; b = Math.Pow(10.0, digit); return ((Round(val * b) / b)); } // 指定桁位置で四捨五入 static public decimal Round(decimal val, int digit) { decimal b; b = (decimal)Math.Pow(10.0, digit); return ((Round(val * b) / b)); } |