C++相談室 part86
レス数が950を超えています。1000を超えると書き込みができなくなります。
0960デフォルトの名無しさん
2010/12/08(水) 01:24:43入力された数字が整数か実数で条件分岐したいと思っています。
double d;
cin >> d;
int i=(int)d;
double EPS=0.001;
if( abs(i-d)<EPS ){
//i を使用して処理
} else {
//d を使用して処理
}
cinから整数値を入力した場合
『double型に格納された整数は内部で正しく表現されないため、
これをint型にキャストすると、値が入力値より誤って1減るに違いない』
と推測していたのですが、i には入力値が1減らずに入りました。
入力値は1~9999までの整数値を試しましたが、どれも入力値と同じ値が i に格納されました。
推測が外れて不気味です。
なぜ入力値と同じ値が i に格納されるのか、教えていただけませんか?
レス数が950を超えています。1000を超えると書き込みができなくなります。