读书人

同是对double型的正数向下取整floor

发布时间: 2012-05-27 05:42:30 作者: rapoo

同是对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。

读书人网 >C++

热点推荐