2014-11-06 92 views
-2

我在網上做了一些搜索。但是,下面的情況沒有解決方案。浮點四捨五入0.5到0

如果該值小於或等於5,則將其刪除並將其全部數字放在其右側。

如果該值大於5,則將該數字加1以舍入。

123.4561235輪到123.456123。

123.4561236 round to 123.456124。

有沒有辦法做到這一點?

+2

你不能圓浮點變量小數位的具體數字。他們不*有*小數位。 – EJP 2014-11-06 07:48:15

+0

@EJP它不是重複的,OP有非常特殊的舍入規則。 – 2014-11-06 07:52:10

+0

有什麼理由讓你有這些非常特殊的舍入規則? – 2014-11-06 07:52:37

回答

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