我正在使用 C printf 列印雙精度數,發現舍入不一致。有時它不會以某些值四舍五入。
double t = 16.125;
printf("%-10.2lf", t);
這將列印 16.12。我認為它會四舍五入到 16.13。
double t = 16.135;
printf("%-10.2lf", t);
這將列印 16.14。這就是我認為所有情況都會發生的情況。
uj5u.com熱心網友回復:
默認舍入行為是四舍五入。
這表示:
16.125 正好在 16.12 和 16.13 之間,所以它四舍五入(向下)到 16.12(偶數)。
16.135 不能用浮點數精確表示。在我的系統上,它是 16.135000000000001563194018672220408916473388671875。這個數字更接近 16.14 而不是 16.12,所以它四舍五入到 16.14。
16.375 正好在 16.37 和 16.38 之間,所以它四舍五入(向上)到 16.38(偶數)。
fesetround
允許更改默認值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/507314.html
標籤:C