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