首页 > 解决方案 > 类型转换的舍入问题

问题描述

在计算小费金额时,我遇到了类型转换的问题。

const double TIP_PERCENTAGE = .15;

cout << static_cast<int>(TIP_PERCENTAGE * 100.00);

return 0;

我得到 14 而不是 .15 x 100 = 15,然后转换为 15 的 int。我可以看出它正在截断答案,但我不确定为什么或如何得到小于 15 的值,例如 14.999等等

标签: c++

解决方案


摆脱这个问题的最简单方法是std::round在转换为 int 之前使用:

static_cast<int>(std::round(TIP_PERCENTAGE * 100.0))

推荐阅读