类型转换<int>的舍入问题
rounding issue with typecast<int>
我在计算小费金额时遇到类型转换问题。
const double TIP_PERCENTAGE = .15;
cout << static_cast<int>(TIP_PERCENTAGE * 100.00);
return 0;
我得到 14 而不是 .15 x 100 = 15,然后转换为 15 的整数。我可以说它正在截断答案,但我不确定为什么或如何获得小于 15 的值,例如 14.999 等。
解决此问题的最简单方法是在转换为 int 之前使用 std::round
:
static_cast<int>(std::round(TIP_PERCENTAGE * 100.0))
相关文章:
- C++将浮点指针值舍入为小数位数
- Boost::posix_time::ptime舍入到给定的分钟数
- 浮点定向舍入和优化
- 为什么输出精度没有正确舍入?
- 使用设置精度时如何阻止数字向上舍入?
- 如何在使用 MPFR 时在提升多精度中设置舍入模式
- OpenCV 细分一致的 Rect2f 到 Rect2i 舍入
- C++ 中的舍入函数
- 舍入 QDecDouble 值,精度最多为两个字符
- 将大 int 转换为浮点数,而不舍入 c++
- 舍入错误检测
- 根据浮点符号对浮点进行舍入的最简单方法是什么
- 将整数舍入到另一个整数的最接近的倍数
- 类型转换<int>的舍入问题
- 使用设置精度在C++中舍入小数点时出现问题
- 货币数据的Visual C++舍入问题
- 如何优雅地解决这个舍入问题
- 将浮点转换为无符号短整型时出现舍入问题
- c++双舍入问题
- C++舍入问题