我的位置: 首頁(yè) > 學(xué)習(xí)專(zhuān)區(qū) > .NET技術(shù) > 關(guān)于 C 語(yǔ)言中數(shù)據(jù)精度問(wèn)題

關(guān)于 C 語(yǔ)言中數(shù)據(jù)精度問(wèn)題

2013-05-31 08:40:41
來(lái)源:
[導(dǎo)讀] 在軟件開(kāi)發(fā)中我們經(jīng)常遇到數(shù)據(jù)精度處理問(wèn)題。先看如下代碼 include include includeint main ( void ){char *s= "0 100001200 ";fpr

在軟件開(kāi)發(fā)中我們經(jīng)常遇到數(shù)據(jù)精度處理問(wèn)題。

先看如下代碼

#include #include #include

int main ( void )

{

char *s="0.100001200";

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

return 0;

}

以上代碼編譯后執(zhí)行,結(jié)果如下:

$ 0.100001

$

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

經(jīng)過(guò)測(cè)試,發(fā)現(xiàn)并非是 atof 或 strtod 函數(shù)轉(zhuǎn)換時(shí)精度丟失,而是 %f 的格式化輸出符默認(rèn)的輸出為小數(shù)點(diǎn)后面 6 位的精度。

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

#include #include #include

int main ( void )

{

char *s="0.100001200";

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

return 0;

}

編譯后執(zhí)行,結(jié)果如下

$ 0.100001200

$

深圳北大青鳥(niǎo)http://www.sbsnmc.com

評(píng)論
熱點(diǎn)專(zhuān)題
>>
相關(guān)文章推薦
>>
好吊妞免费视频在线观看,久久亚洲国产人成综合网,久久精品国产2020,欧美精品综合在线
在线观看少妇福利 | 亚洲区日韩精品中文字幕 | 在线亚洲人成电影 | 亚洲欧美日韩精品久久无广告 | 欧美日韩在线观看一区 | 亚洲中文字幕精品第一页 |