2013-03-05 104 views
-1

我正在使用一些數字解析文件。我試圖將字符串中的數字更改爲float或double,但是我發現stof和stod有一個精確的問題,它們在VS C++中很少量。例如stof()和stod()精度

string str1="3.14", str2="45.106"; 
double number1, number2; 
number1=stod(str1); 
number2=stof(str2); 

當我測試(number1 == 3.14),它返回「false」。當我查看調試器時,number1實際上是3.139999999或類似的東西! number2可能是45.1060000002或類似的東西。任何解釋或解決方案?

+2

說明:http://en.wikipedia.org/wiki/Floating_point#Accuracy_problems。在使用與浮點類型相等的比較時需要注意。 – Zeta 2013-03-05 20:33:29

回答

0

你不妨看看這個例子:

How is floating point stored? When does it matter?

從這個學習的東西,是,它是幾乎從來沒有解決做兩個浮點數之間的直接比較。浮點數只有一定的精度,因此可以預期的精度有一個限制,這很好地放在Zeta評論的鏈接中。