程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> C 語言中數據精度問題

C 語言中數據精度問題

編輯:關於C

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

  先看如下代碼

  #include <stdio.h> #include <stdlib.h> #include <string.h>

  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 <stdio.h> #include <stdlib.h> #include <string.h>

  int main ( void )

  {

  char *s="0.100001200";

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

  return 0;

  }

  編譯後執行,結果如下

  $ 0.100001200

  $

*
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved