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

Floating point 为什么这个程序在使用浮点和整数时输出不同的答案?,floating-point,int,Floating Point,Int,我做了一个程序,可以找到一个数的阶乘。但是对于整型数据类型,答案是12,对于float,答案是13。但integer和float的大小都是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("f

我做了一个程序,可以找到一个数的阶乘。但是对于整型数据类型,答案是12,对于float,答案是13。但integer和float的大小都是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;
}
#包括
int main()
{
int n,i=1,fact=1;
scanf(“%d”和“&n”);

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


阿拉伯数字可以用三位数到999。罗马数字不能超过III。为什么会有差异?因为这两种数字系统表示数字的方式完全不同,并且以完全不同的方式使用相同的空间量。

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

如果将该值正确读入浮点,则答案将是相同的

您还需要更改printf