簡體   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