浮点舍入,舍入0.5到0

时间:2014-11-06 07:39:35

标签: c++ floating-point rounding

我在网上做了一些搜索。但是,下面的案例没有解决办法。

如果该值小于或等于5,则将其删除,并将所有数字放在右侧。

如果该值大于5,则将要舍入的数字增加1。

123.4561235 round to 123.456123。

123.4561236回合123.456124。

有没有办法这样做?

1 个答案:

答案 0 :(得分:0)

好的,你走了。
免责声明:我还没有彻底测试过这个问题。不要在生产代码中使用它,特别是为了钱(你根本不应该使用浮点钱)。

double specialRound(double x, int precision) {
    return std::round((static_cast<long long>(x * std::pow(10.0, precision + 1)) - 1) / 10.0 + 0.05) 
         / std::pow(10.0, precision);
}

Demo