2012-02-21 1 views
0

私は数の階乗を見つけるプログラムを作った。しかし、整数データ型の答えは最大12、浮動小数点数は13です。しかし、整数と浮動小数点のsizeofは32です。なぜ私は異なる答えを見ていますか?浮動小数点数と整数を使うときに、このプログラムが異なる答えを出力するのはなぜですか?

#include<stdio.h> 
int main() 
{ 
    int n,i=1,fact=1; 


    scanf("%d",&n); 
    while(i<=n) 
    { 
     fact=fact*i; 
     i=i+1; 
    } 
    printf("fact is %d\n",fact); 
    return 0; 
} 

答えて

0

2つの全く異なる数字表現です。それらが同じであることを期待する理由はありません。彼らはまったく異なっているので、さまざまな答えを出しています。

アラビア数字は999まで3桁で数えられます。ローマ数字はIIIを超えることはできません。なぜ違い?まあ、2つの数値系は数値を表現する全く異なる方法であり、全く異なる方法で同じ量の空間を使うからです。

0

浮動小数点数を使ったときに、scanfを変更していないので、浮動小数点変数に整数表現を読み込もうとしました。 32ビットを完全に異なる方法で使用することを指摘しています。

値をフロートに正しく読み込むと、答えは同じになります。

また、printfも変更する必要があります。

関連する問題