-2
我在網上做了一些搜索。但是,下面的情況沒有解決方案。浮點四捨五入0.5到0
如果該值小於或等於5,則將其刪除並將其全部數字放在其右側。
如果該值大於5,則將該數字加1以舍入。
123.4561235輪到123.456123。
123.4561236 round to 123.456124。
有沒有辦法做到這一點?
我在網上做了一些搜索。但是,下面的情況沒有解決方案。浮點四捨五入0.5到0
如果該值小於或等於5,則將其刪除並將其全部數字放在其右側。
如果該值大於5,則將該數字加1以舍入。
123.4561235輪到123.456123。
123.4561236 round to 123.456124。
有沒有辦法做到這一點?
確定你在這裏。
聲明:我沒有徹底地測試過。不要在生產代碼中使用它,特別是爲了錢(你根本不應該使用浮點數來賺錢)。
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);
}
你不能圓浮點變量小數位的具體數字。他們不*有*小數位。 – EJP 2014-11-06 07:48:15
@EJP它不是重複的,OP有非常特殊的舍入規則。 – 2014-11-06 07:52:10
有什麼理由讓你有這些非常特殊的舍入規則? – 2014-11-06 07:52:37