我遇到了将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
那么为什么这里的输出不同呢? 这只在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