我想返回一個double設置精度的函數!這可能嗎?我想要精確度爲10 -5!設置精度返回語句C++
例如:
double f(double a ,double b)
{
//something like return.setprecision(6);
return (a+b)/2;
}
我想返回一個double設置精度的函數!這可能嗎?我想要精確度爲10 -5!設置精度返回語句C++
例如:
double f(double a ,double b)
{
//something like return.setprecision(6);
return (a+b)/2;
}
假設你的意思是截短至5位小數:
乘以10 。舍入爲整數。將結果除以10 。
對於四捨五入,請使用標準庫,以避免超出整數類型的範圍。
請注意,結果只能是完美的可以精確表示的數字。儘管C++標準允許使用十進制表示,但浮點數的常見表示是二進制的。這意味着與大多數數字結果將不準確。
這在邊緣情況下無法正常工作 –
@EdHeal:如果OP需要處理DBL_MAX附近的數字,檢查這種大小並且什麼都不做也是微不足道的。如果OP表示除5個小數以外的其他東西,例如尾數只有6個十進制數字,那麼這很難做到。無論如何,結果只能是完美的數字,可以精確表示。 –
邊緣情況是由於二進制和十進制系統之間的轉換引起的。有很多。 –
不,這是不可能的。雙精度取決於硬件/ CPU等。
無論如何 - 爲什麼要這樣做?
你的意思是截短到n小數?那有什麼用處? –
Double是二進制的。您無法準確地將其舍入到一定數量的小數位,會出現舍入問題。所以你需要告訴你想要達到什麼,以獲得正確的解決方案。 – hyde
@hyde:Re「double是二進制的」,這在實踐中是如此*在當前的PC機上。 C++標準允許二進制和十進制浮點表示。整型類型限制爲二進制。 –