首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 語言 printf 保留兩位小數:%.2f 已內建四捨五入,無需手動加 0.001

     編輯:程式設計綜合問答

原始代碼

double decimal;
scanf("%lf", &decimal);
printf("%.2f\n", decimal + 0.001); // 試圖修正四捨五入誤差

問題分析

%.2f 格式化輸出時,會自動對第三位小數進行四捨五入(Round half away from zero)。手動加 0.001 反而可能導致錯誤(如 1.234 → 1.235 → 輸出 1.24,實際應為 1.23)。

正確做法

printf("%.2f\n", decimal); // 直接使用,編譯器/庫函式已正確處理四捨五入

補充說明

  • 浮點數二進制表示存在精度誤差(如 0.1 無法精確表示),但 printf 的四捨五入演算法已考慮此情況。
  • 若需銀行家四捨五入(Round half to even)或精確金融計算,請使用整數(分為單位)或 BigDecimal 類庫。
  • C99 round()、nearbyint() 可在運算層面控制捨入模式。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved