我面临将值从 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