84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
如一下代码所示,在输出数据时候cout和printf区别。
cout
printf
double ans = 0, max = 135.349, min = 3.88633; ans = max * 2086458231 / min; cout << ans << endl; printf("%lf", ans);
输出
7.26652e+010 72665192664.000000
为什么会有这样的不同呢?
学习是最好的投资!
c++的格式化输出问题,cout默认输出浮点数的格式不是%lf,如果要设置输出的格式,可以参考下面的链接http://en.cppreference.com/w/...
#include <iostream> int main() { double ans = 0, max = 135.349, min = 3.88633; ans = max * 2086458231 / min; std::cout << ans << std::endl; // 7.2665e+10 std::cout.setf(std::ios::scientific); std::cout << ans << std::endl; // 7.266497e+10 std::cout.unsetf(std::ios::scientific); std::cout.setf(std::ios::fixed); std::cout << ans << std::endl; // 72664965432.070602 printf("%lg\n", ans); // 7.2665e+10 printf("%lf\n", ans); // 72664965432.070602 return 0; }
cout是C++的语法,printf是C语言了,不过C保留了,在cstdio里面结果不同时因为cout对超长的浮点数默认采用了保留N位+科学计算法的形式,不过cout也是可以用参数格式化输出的,比如cout << setiosflags(ios::fixed) << f就不用科学计数法了,更多的参数你可以查阅手册printf也可以格式化,非常方便
cout默认的流输出有效位是6位,如果超过6位会自动格式化,整数长度超过6位会自动格式化为科学计数法。
cin和cout是c++的代码,printf和scanf是c的代码。%f在c语言中是以十进制小数形式输出浮点型数据。
cout是c++ iostream标准库里的输出方式,而printf是c语言保留下来的,cout默认的格式化输出和%lf不一样
c++的格式化输出问题,cout默认输出浮点数的格式不是%lf,如果要设置输出的格式,可以参考下面的链接
http://en.cppreference.com/w/...
cout是C++的语法,printf是C语言了,不过C保留了,在cstdio里面
结果不同时因为cout对超长的浮点数默认采用了保留N位+科学计算法的形式,不过cout也是可以用参数格式化输出的,比如
cout << setiosflags(ios::fixed) << f
就不用科学计数法了,更多的参数你可以查阅手册
printf也可以格式化,非常方便
cout
默认的流输出有效位是6位,如果超过6位会自动格式化,整数长度超过6位会自动格式化为科学计数法。cin和cout是c++的代码,printf和scanf是c的代码。%f在c语言中是以十进制小数形式输出浮点型数据。
cout是c++ iostream标准库里的输出方式,而printf是c语言保留下来的,cout默认的格式化输出和%lf不一样