今回学んだこと
小数点の四捨五入
小数点以下の一部をゼロで埋める方法
コード
小数点の四捨五入
//四捨五入したい数と、小数点第何位までの桁数を表示させたいかを入力する。
//桁数が足りない場合は0が入る。
decimal[] N = Console.ReadLine().Split().Select(decimal.Parse).ToArray();
decimal num = Math.Round(N[0], (int)N[1], MidpointRounding.AwayFromZero);
Console.WriteLine(num.ToString().PadRight((int)N[1] + 2, '0'));
Math.Round()
だけたど、最近接偶数というものが発生する。
端数が真ん中0.5だと、値に一番近い偶数になってしまうというもの。
(例えば、2.5を四捨五入して3になるだろうと思ったら、実際は2になる)
そのため、Math.Round()
の引数で
MidpointRounding.AwayFromZero
を追加して四捨五入ができるようにします。
ちなみに配列Nは、
N[0] 四捨五入したい数
N[1] 四捨五入したい数を小数点第何位まで表示するかを指定
を表しています。
そしてnum.ToString()
で文字列に変換。
PadRight((int)N[1] + 2, '0')
で右から0をN[1]個詰めていきます。
+2と書いてあるのは、PadRightがコンマも計算に入れるからです。
というよりも、他の良い方法が思いつかなかっただけ…。