C言語における型変換と端数処理
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/02/28 01:06 UTC 版)
「端数処理」の記事における「C言語における型変換と端数処理」の解説
浮動小数点型から整数型へのキャストなどによる型変換では、処理が単純な切り捨てになるものが多く、負の場合は実装による。 C言語のmodf関数は、実数を整数部と小数部に分割する。整数部は0への丸めである。 (以下(§a.b)のようにして示すセクションは JIS X 3010-1993(C89)のもの) C言語およびそれと同じ仕様の言語では、キャストなどによる浮動小数点型から整数型への型変換においては、その値は小数部が捨てられる(§6.2.1.3)。よって「0への丸め」が行われる。 C89では、数学ライブラリ(§7.5)に床関数floorと天井関数ceilがあり(§7.5.6)、浮動小数点型において正方向への丸めと負方向への丸めが計算できる。 C99では、四捨五入関数roundをはじめとして、fegetround/fesetround(これはmath.hではなくfenv.h)による丸めモードの取得と設定など、大幅な強化が図られている。 なお、浮動小数点演算の性質上、たとえば (int)(0.6/0.2) が 3.0 ではなく 2.0 になることがある。これは、浮動小数点表現では 0.6 や 0.2 を厳密に表現できないため、0.6/0.2 が 2.9999999999999996 のような値になるためである。
※この「C言語における型変換と端数処理」の解説は、「端数処理」の解説の一部です。
「C言語における型変換と端数処理」を含む「端数処理」の記事については、「端数処理」の概要を参照ください。
- C言語における型変換と端数処理のページへのリンク