招生熱線
0755-86191118 0755-86191118
我的位置: 首頁 > 學習專區 > .NET技術 > 關于 C 語言中數據精度問題

關于 C 語言中數據精度問題

2013-05-31 08:40:41
來源:
[導讀] 在軟件開發中我們經常遇到數據精度處理問題。先看如下代碼 include include includeint main ( void ){char *s= "0 100001200 ";fpr

在軟件開發中我們經常遇到數據精度處理問題。

先看如下代碼

#include #include #include

int main ( void )

{

char *s="0.100001200";

fprintf ( stderr, "%f\n",atof(s));

return 0;

}

以上代碼編譯后執行,結果如下:

$ 0.100001

$

問題出在哪里,是 atof 函數的問題? 將 atof(s) 替換成 strtod(s,NULL) 后,結果依然如此。

經過測試,發現并非是 atof 或 strtod 函數轉換時精度丟失,而是 %f 的格式化輸出符默認的輸出為小數點后面 6 位的精度。

我們將上面的代碼修改為:

#include #include #include

int main ( void )

{

char *s="0.100001200";

fprintf ( stderr, "%18.10f\n",atof(s));

return 0;

}

編譯后執行,結果如下

$ 0.100001200

$

深圳北大青鳥http://www.sbsnmc.com

評論
好吊妞免费视频在线观看,久久亚洲国产人成综合网,久久精品国产2020,欧美精品综合在线
开心五月激情中文在线观看 | 亚洲一区欧美国产 | 午夜麻豆国产精品 | 亚洲中文字幕精品有码在线 | 日本韩国偷自拍拍 | 亚洲欧洲精品天堂一级 |