2011-05-30 75 views

回答

10

關於什麼:

std::stringstream ss; 
ss << std::fixed << std::setprecision(N) << double_number; 
// ss.str() gives you the string 
+0

所以我們絕對需要知道N,沒有神奇的解決方案。 – Guillaume07 2011-05-30 10:39:02

+3

在編程中沒有「魔法」; P – 2011-05-30 10:41:53

2

它不能保證有一個double具有完全相同這個值:1.4291400000000001。它可能比這個稍微大一些,或者比它小一點。更不像是那樣。

在這個事實之後,我可以說沒有最好的辦法從1.42914那裏得到。您可能會得到1.42913,因爲實際的雙倍值可能是:1.4291399999999999而不是上述值。

閱讀:What Every Computer Scientist Should Know About Floating-Point Arithmetic

+0

是的,但是,在1.421399999和1.429140000001的情況下,我們都想要1.4214正常..所以也許有一個很好的方法來做到這一點 – Guillaume07 2011-05-30 10:42:33

+0

@ Guillaume07:當然,'setprecision(4) 。 – MSalters 2011-05-31 10:34:06

相關問題