【发布时间】:2020-02-22 06:31:29
【问题描述】:
我注意到 c++ 中有一些我不理解的奇怪行为, 我正在尝试以十六进制表示形式打印截断的双精度
此代码输出为17,它是十进制表示
double a = 17.123;
cout << hex << floor(a) << '\n';
虽然此代码输出为 11 也是我的理想输出
double a = 17.123;
long long aASll = floor(a);
cout << hex << aASll << '\n';
由于 double 可以得到非常大的数字,我担心将截断的数字存储在 long long 变量中时输出错误,有什么建议或改进吗?
【问题讨论】: