もし、C99が使える環境であれば、round()という関数が用意されている。これは、小数点以下を四捨五入した整数値(ただし型はdouble)を返す。
次にC99が使えない環境の場合であるが、まず数値が常に正の値であるならば、小数点以下を四捨五入を行うには、0.5を足して、小数点以下を切り捨てればよい。
具体的には、
a=123.456; a+=0.5; a=int(a);
の様に書くと、aは123になる。
小数第何位で四捨五入をしたいという場合は、その位分を最初に掛けて、整数での四捨五入後、同じ数字で割ってやればよい。
具体的には、
a=123.456; a*=100; a+=0.5; a=int(a); a/=100;
としてやると、aは123.46になる。
逆に大きい位で四捨五入をする場合は、最初に位分で割って、整数での四捨五入後、同じ数字を掛けてやればよい。
具体的には
a=123.456; a/=10; a+=0.5; a=int(a); a*=10;
とすると、aは120になる。
次に、数値が負の場合も含めて行う場合であるが、負の場合は0.5引いて切り捨てる必要がある。if文で場合分けしても良いが、trueが1、falseが0を返すことに着目して、
a=int(a+.5-(a<0));
の様に書くと良い。
最終更新日