为什么这个程序在使用浮点数和整数时输出不同的答案?

时间:2012-02-21 02:22:33

标签: floating-point int

我做了一个程序,可以找到一个数字的阶乘。但是对于整数数据类型,答案最多为12,对于float,它是13.但是整数和浮点数的大小都是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;
}

2 个答案:

答案 0 :(得分:0)

他们是两个完全不同的数字表示。没有理由期望它们是相同的。他们给出了不同的答案,因为他们完全不同。

阿拉伯数字最多可以计入999个,有三个位置。罗马数字不能算过去三。为什么不同?好吧,因为两个数字系统是完全不同的表示数字的方式,并以完全不同的方式使用相同数量的空间。

答案 1 :(得分:0)

我认为问题在于,当你使用浮点数时,你没有改变scanf,因此试图将整数表示读入浮点变量,因为它们的大小与它适合的大小相同但正如David正确指出的那样他们以完全不同的方式使用32位。

如果您正确地将值读入Float,答案将是相同的。

您还需要更改printf。