我在网上做了一些搜索。但是,下面的案例没有解决办法。
如果该值小于或等于5,则将其删除,并将所有数字放在右侧。
如果该值大于5,则将要舍入的数字增加1。
123.4561235 round to 123.456123。
123.4561236回合123.456124。
有没有办法这样做?
答案 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);
}