同是对double型的正数向下取整,floor和(int)什么区别?解决方法

同是对double型的正数向下取整,floor和(int)什么区别?
为什么如下的两个程序,一个是WA,一个是AC?

C/C++ code


// WA代码

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    double s,m;
    int n;
    cin >> n;
    for (int i=1;i<=n;i++)
    {
        cin >> m;
        s=0;
        if (m==0)
            cout << "1" << endl;
        else
        {
            for (double k=1;k<=m;k++)
                s+=log10(k);
            cout << floor(s)+1 << endl;
        }
    }
    return 0;
}


//------------------------



//AC代码

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    double s,m;
    int n;
    cin >> n;
    for (int i=1;i<=n;i++)
    {
        cin >> m;
        s=0;
        if (m==0)
            cout << "1" << endl;
        else
        {
            for (double k=1;k<=m;k++)
                s+=log10(k);
            cout << (int) s+1 << endl;
        }
    }
    return 0;
}




------解决方案--------------------
floor(...)是函数调用,而(int)...是语句。
floor函数返回的是一个double类型,而(int)得到的数据类型就是int。