題目如下:

然后我寫了兩段代碼,但是基本相同,只是對變數的資料定義一個是進行float型定義,一個是進行double型定義。
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
float celsius,fahr;
printf("celsius = ");
scanf("%f",&celsius);
fahr=(9/5.0)*celsius+32;
printf("fahr = %f",fahr);
return 0;
}
//結果:98.959999
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
double celsius,fahr;
printf("celsius = ");
scanf("%lf",&celsius);
fahr=(9/5.0)*celsius+32;
printf("fahr = %lf",fahr);
return 0;
}
//結果:98.960000
想問一下是哪個運算程序出了問題?又是什么原理?
uj5u.com熱心網友回復:
沒出任何問題,你發現了一個float和double精度不同的很好的栗子,表揚一哈。uj5u.com熱心網友回復:
是說什么少了0.000001嗎?我的編譯器是多了0.000001,資料其實是以二進制存盤的,double有8位元組,但float只有4位元組,就會造成誤差(0.000001)轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/243415.html
標籤:C語言
上一篇:關于opencv霍夫圓檢測,求大佬看下原因,我弄了6個多小時還不行,是哪里出問題了。
下一篇:Linux下依賴于第三方庫生成自己的動態庫,然后g++編譯呼叫生成的動態庫的時候報:對'boost::re_detail......'未定義的參考
