■9/5では小数点以下切り捨てられる
#include <stdio.h>
//摂氏を華氏に変換
double c2f(double c){
double f = ((9/5)*c)+32;
return f;
}
//華氏を摂氏に変換
double f2c(double f){
double c = (5/9)*(f-32);
return c;
}
int main(void){
printf("F華氏\t%7.2f\n",c2f(-273.15));//絶対零度
printf("F華氏\t%7.2f\n",c2f(0)); //氷点
printf("F華氏\t%7.2f\n",c2f(100)); //沸点
puts("★");
printf("C摂氏\t%7.2f\n",f2c(-459.67));//絶対零度
printf("C摂氏\t%7.2f\n",f2c(32)); //氷点
printf("C摂氏\t%7.2f\n",f2c(212)); //沸点
}
➡意図しない実行結果
./a.out
F華氏 -241.15
F華氏 32.00
F華氏 132.00
★
C摂氏 -0.00
C摂氏 0.00
C摂氏 0.00
9/5と記述すると整数同士の演算となり
小数点以下が切り捨てられ
1.8ではなくて
1になります。
■9.0/5.0と浮動小数点で計算する
#include <stdio.h>
//摂氏を華氏に変換
double c2f(double c){
double f = ((9.0/5.0)*c)+32;
return f;
}
//華氏を摂氏に変換
double f2c(double f){
double c = (5.0/9.0)*(f-32);
return c;
}
int main(void){
printf("F華氏\t%7.2f\n",c2f(-273.15));//絶対零度
printf("F華氏\t%7.2f\n",c2f(0)); //氷点
printf("F華氏\t%7.2f\n",c2f(100)); //沸点
puts("★");
printf("C摂氏\t%7.2f\n",f2c(-459.67));//絶対零度
printf("C摂氏\t%7.2f\n",f2c(32)); //氷点
printf("C摂氏\t%7.2f\n",f2c(212)); //沸点
}
9.0/5.0として浮動小数点演算を行う必要があります。
➡意図した実行結果
./a.out
F華氏 -459.67
F華氏 32.00
F華氏 212.00
★
C摂氏 -273.15
C摂氏 0.00
C摂氏 100.00