浮動小数点演算で小数第N位まで計算して返却する関数

シェアする

  • このエントリーをはてなブックマークに追加

スポンサードリンク

浮動小数点演算

浮動小数点はプログラミング言語における型の一つで、仮数と指数で表現される数字のことを言います。
例えば、
0.625は1. 01×2 -1 
のように2進数で表すことができるので浮動小数点です。
浮動小数点のコンピューター内部での扱いは少し複雑になるのでここでは割愛して、単純に説明するとC言語やC++では単に0.3とか小数で表記される値は浮動小数点です。

スポンサードリンク

浮動小数点でよく使う関数

浮動小数点を扱うプログラミングで四捨五入、切り捨て、切り上げは非常によく使う関数です。
それぞれ、round、floor, ceilという標準関数が用意されています。
仕様は以下の通りです。

関数:double round(double dIn);
引数:dIn 浮動小数点の値
戻り値:四捨五入された値

 

関数:double floor(double dIn);
引数:dIn 浮動小数点の値
戻り値:切り上げた値

 

関数:double ceil(double dIn);
引数:dIn 浮動小数点の値
戻り値:切り捨てた値

同様の関数は、C言語やC++以外にJavaやPHPやデータベースであるOracleにも用意されています。

スポンサードリンク

浮動小数点演算で小数第N位まで計算して返却する関数

私が、プログラミングを始めた当初から標準で用意されているround、floor、ceilに汎用性がないことが非常に疑問で不満でした。
round、floor、ceilは必ず小数以下を四捨五入、切り上げ、切り捨てを行います。
これでは汎用性がなく、実際にプログラムを行う際は、小数第N位まで必要になることがよくあります。
そこで、小数第N位まで計算して返却する関数round2、floor2、ceil2を作ってみました。

関数:double round2(double dIn, int nLen);
引数:dIn 浮動小数点の値, nLen 小数第N位
戻り値:四捨五入された値

 

関数:double floor2(double dIn, int nLen );
引数:dIn 浮動小数点の値, nLen 小数第N位
戻り値:切り上げた値

 

関数:double ceil2(double dIn, int nLen);
引数:dIn 浮動小数点の値, nLen 小数第N位
戻り値:切り捨てた値

以下がその関数と使用例です。

 

 

 

実行結果は以下の通りです。

 

これらの関数は標準で用意してほしい関数ですが、どういう訳か用意されていないのでいつも自分で作っています。

round、floor、ceilを使う時の注意点

まず、それぞれの単語の意味を理解しましょう。
round:文字通り丸めるです。
floor:床です。床に近づける、つまり切り捨てるです。
ceil:ceiling天井のことです。天井に近づける、つまり切り上げです。
「Error: 識別子”pow”が定義されていません」というエラーメッセージが出ることがあります。
include<math.h>が必要です。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です