1、
#include <stdio.h> int main(void) { FILE *fp; // 聲明指向FILE型的指針變量 double pi = 3.14159265358979323846; //聲明 double型變量 printf("pi from value: %23.21f.\n", pi); //顯示變量pi的值,因為浮點數的精度是有限的,導致pi的值不等於初始值。 //將變量pi的值使用fprintf函數寫入到文件中 if((fp = fopen("PI.txt", "w")) == NULL) //以只寫的方式打開文件PI.txt. printf("\aFile open failed.\n"); else { fprintf(fp, "%lf", pi); //使用fprintf函數將變量pi的值寫入到流fp(文件PI.txt)中,文件PI.txt中僅保留小數點后6位小數,這是因為浮點數默認只輸出 //小數點后6位數字 fclose(fp); } //從PI.txt文件中讀取數據,使用函數fscanf函數保存至變量中並顯示 if((fp = fopen("PI.txt","r")) == NULL) //以只讀方式打開文件 printf("\aFile open failed.\n"); else { fscanf(fp, "%lf", &pi); printf("Pi from file: %23.21f.\n", pi); // 次數並沒有准確的顯示文件PI.txt中的數值,也就是小數點后六位,這是因為double型並不能毫無誤差地顯示實數 //的所有位數。 fclose(fp); } return 0; } // 以上程序說明了什么? 1、浮點數精度有限 2、fprintf函數不能夠寫入所有的位數 3、double型並不能毫無誤差地顯示實數 // 要做到不丟失任何一位數據(寫入文件的時候不丟失任何數據),就必須寫入所有位數。 也就是說能夠寫入所有位數? 然后完整的顯示?