同是对double型的正数向下取整,floor和(int)什么区别?解决方法
同是对double型的正数向下取整,floor和(int)什么区别?
为什么如下的两个程序,一个是WA,一个是AC?
------解决方案--------------------
floor(...)是函数调用,而(int)...是语句。
floor函数返回的是一个double类型,而(int)得到的数据类型就是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。