第一個代碼:
#include <stdio.h>
int main() {
int Celsius;
printf("temperature in Celsius?\n");
scanf("%d", &Celsius);
float Fahrenheit = (Celsius * 9 / 5) 32;
printf("temperature in Fahrenheit is %f", Fahrenheit);
return 0;
}
第二個代碼:
#include <stdio.h>
int main() {
float Celsius;
printf("temperature in Celsius?\n");
scanf("%f", &Celsius);
float Fahrenheit = (Celsius * 9 / 5) 32;
printf("temperature in Fahrenheit is %f", Fahrenheit);
return 0;
}
我想將攝氏度轉換為華氏度,但問題是如果我輸入 celsius=37:
第一個代碼顯示98.00000(這是一個錯誤的答案),而第二個代碼顯示98.599998(這是正確的)。
uj5u.com熱心網友回復:
當Celsius被宣告為 typeint時,這個 this 運算式
(Celsius * 9/5) 32;
不涉及任何浮點變數的完全在整數空間中計算。代碼中的整數除法基本上意味著“洗掉余數”。(例如9/5 == 1)
簡單的解決方法是強制該運算式中的至少一個變數或常量為浮點型別。
float Fahrenheit = (Celsius * 9.0f/5) 32;
或者只是簡單地:
float Fahrenheit = (Celsius * 1.8f) 32;
uj5u.com熱心網友回復:
如果Celsius定義為 an int(如在第一個程式中),則運算式(Celsius * 9 / 5) 32;是使用整數算術計算的,因此除以5四舍五入0。制作Celciusafloat允許輸入十進制值,例如19.5并使用浮點算術執行計算,給出預期的結果,這實際上應該是98.6,但98.599998由于型別的有限精度float和默認的小數位數 (6) 而顯示為。
這是修改后的版本:
#include <stdio.h>
int main() {
double Celsius;
printf("temperature in Celsius?\n");
if (scanf("%lf", &Celsius) == 1) {
double Fahrenheit = (Celsius * 9.0 / 5) 32;
printf("temperature in Fahrenheit is %g\n", Fahrenheit);
}
return 0;
}
uj5u.com熱心網友回復:
#include <stdio.h>
int main()
{
float celsius, fahrenheit;
/* Input temperature in celsius */
printf("Enter temperature in Celsius: ");
scanf("%f", &celsius);
/* celsius to fahrenheit conversion formula */
fahrenheit = (celsius * 9 / 5) 32;
printf("%.2f Celsius = %.2f Fahrenheit", celsius, fahrenheit);
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/421399.html
標籤:
