Twitterに投稿 はてなブックマークに追加 Yahoo!ブックマークに追加 Google Bookmarksに追加

目次 >> C、C++ >> Tips

四捨五入を行うには?

もし、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)); 

の様に書くと良い。


最終更新日


本文中のFC4はFedora ProjectのFedora Core 4を、FC5はFedora Core 5を、FC6はFedora Core 6をopenSUSEはNovellのSUSE Linux OSSを表します。Fedora7以降は、単にFedora7、Fedora8、Fedora9、Fedora10、Fedora11、Fedora12、Fedora13、Fedora14、Fedora15と表示しています。Ubuntuは、必要に応じて17.04、18.04のようにバージョン番号をつけて区別しています。

ここに登場するドメイン名やIPアドレスなどはフィクションです。実在の人物・団体等とは一切関係がありません。
実際に使用する際は、各自の環境に合わせて書き換えてください。
もし何か間違いなどありましたらこちらからご連絡ください
リンクに許可は不要です。
Copyright (C) 2014 Chikuma Engineering Co., Ltd. All Rights Reserved.