繁体   English   中英

cout和printf中打印零的差异

[英]difference in printing zero in cout and printf

printf("%lf\n",-1.0+0.9+0.1);

结果是

0.000000

cout<<-1.0+0.9+0.1;

结果是

 2.77556e-17

再一次,如果我改变

 cout<<0.9+0.1+-1.0;

结果是

 0

为什么这种不同的行为只是简单地求和?为什么2.77556e-17是机器epsilon?为什么我得到它而不是零?

默认情况下,浮点变量的std::cout%g标志类似,而不是printf%lf标志。 为了获得相同的行为,您必须将std::fixed传递给流,例如:

std::cout << std::fixed << 0.9+0.1+-1.0;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM