Double から int への値の変換で問題に直面しています。私は次のコードを実行しようとします:
int main()
{
double val_d= 6.25e-05;
cout << (1/val_d) << endl;
unsigned int val_ui = (unsigned int ) (1/val_d);
cout << val_ui << endl;
}
double から int への変換では、小数部分が削除される場合がありますが、整数部分はそのままにする必要がありますか?
私が得る出力は次のとおりです:16000 15999
では、なぜここで o/p が異なるのでしょうか? これは、fedora でのみ発生しています。Windows と Ubuntu では正常に動作します。(両方の出力は 16000 です)
上記のコードを微調整したところ、次の結果が得られました。
int main()
{
double val_d= 6.25e-05;
cout << (1/val_d) << endl;
double val_intermediate = (1/val_d) ;
cout << val_intermediate << endl;
unsigned int val_ui = (unsigned int ) val_intermediate;
cout << val_ui << endl;
}
新しい出力は 16000 16000 16000 です