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

プログラミング

浮動小数点演算で小数第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>が必要です。

プログラミングの無料レッスン体験

約8,000名の受講生と80社以上の導入実績のあるプログラミングやWebデザインのオンラインマンツーマンレッスンCodecamp

<Codecampの特徴>

1 現役エンジニアによる指導

2オンラインでのマンツーマン形式の講義

3大手企業にも導入されている実践的なカリキュラム

↓無料体験レッスン実施中です。

プログラミングのオンラインスクールCodeCamp

コメント

  1. 通りすがり より:

    使用例のroundとcailのコメントが逆になっていませんか?