我的位置: 首頁 > 學習專區 > .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,欧美精品综合在线
日韩欧美在线一区 | 亚洲成A人片在线V观看 | 一级a做片免费观看久久 | 日韩精品免费一区二区三区 | 亚洲中文字幕不卡专区 | 亚洲欧美国产动漫综合 |