キャスト演算子 C/C++でキャスト演算子は必須である、しかし数字があふれるなどトラブルの元でもある。 整数(int)は階段状の可算(可付番)集合であり、実数(float)はスロープ状の非加算(非可付番)集合である。

 

可算(可付番)集合とは、階段を1段2段3段と数えて上がれるような数値並びで、自然数、整数、有理数(分数)がある。
非加算(非可付番)集合はスロープ状の数値並びで、階段を数えて登るようなことが出来ない、実数、複素数がある。
数学では実数は(対角線論法により)隙間の全くない密な物とされるが、CPUではビット列で表されるので厳密には、段差がある。

 

int ix; 

float x; 

ix=(int)x; はスロープ状の世界から、階段状の世界に数値を代入することで、打ち切り誤差を生ずる。 floatといえども有限のbit列から出来ているので、微少には段差がある。

 

 

doubleからfloatの代入では、双方ともに実数ではあるが、その表す大きさ(指数)と、表す桁数(仮数)に差がある、その段差を踏み外さないよう、注意が必要である。