[英]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.