
52
4
章 型変換
通り。
The rounding error (f_var - l_var;) is 3.000000
浮動小数点型の値はいずれも、より大きな精度の浮動小数点型で正確に表せる。
double
値が
long double
、あるいは、
float
値が
double
または
long double
に変換されるときには、
値は正確に保存される。精度の大きな型から小さな型への変換では、変換される値が新た
な型の値範囲を超えかねない。変換した型の値範囲を超えたときの変換結果は未定義であ
る。値範囲に収まってはいるが、変換した型の精度では正確に表現できないなら、結果は
大小問わず最も近い表現可能値になる。例2-2のプログラムは、精度の低い浮動小数点型へ
の変換による丸め誤差を示している。
複素数を実浮動小数点型に変換するときには、虚部は捨てられ、結果が複素数の実部に
なるが、この節で述べた変換先の型への変換がさらに生じることもある。
4.1.5.5
複素浮動小数点型への変換
整数または実浮動小数点数を複素型に変換するとき、前節で述べたように結果の実部は、
その値を対応する実浮動小数点型に変換して得られる。虚部は0だ。
複素数を異なる複素型に変換するときは、実部と虚部を別々に実浮動小数点型の規則に
従って変換する。
#include <complex.h> //
虚数定数
I
のようなマクロを定義
double _Complex dz = 2;
float _Complex fz = dz + I;
この2つの初期化の最初