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

C++ 輸出格式控制:將結果精確到小數點後三位

     編輯:程式設計疑難解答

問題背景

在 C++ 程式設計中,初學者常遇到浮點數輸出精度不足的問題。例如計算圓柱體積積時,預設輸出可能只顯示幾位小數,無法滿足「精確到小數點後三位」的需求。

原始代碼示例

#include <iostream>
using namespace std;

int main() {
    int r, h;
    cout << "please input two number:" << '\n';
    cin >> r >> h;
    cout << "radious:" << r << " high:" << h << endl;
    double v = 3.14 * r * r * h;
    cout << "The volume is:" << v << endl;
    return 0;
}

解決方案

使用 <iomanip> 標頭檔中的 fixed 和 setprecision(n) 操作符即可輕鬆控制輸出精度。

修改後的關鍵代碼

#include <iomanip> // 必須包含此標頭檔

// ... 計算體積 v 之後 ...
cout << "The volume is:" << fixed << setprecision(3) << v << endl;

原理解析

  • fixed:以固定小數位數模式輸出浮點數,而非科學記數法。
  • setprecision(3):設定小數點後顯示的位數為 3 位。
  • 兩者結合使用,即可確保輸出格式如 123.456,不足位數會自動補零(如 10.500)。

完整修正範例

#include <iostream>
#include <iomanip> // 關鍵:引入輸入輸出格式控制庫
using namespace std;

int main() {
    int r, h;
    cout << "Please input radius and height:" << endl;
    cin >> r >> h;
    
    double v = 3.14159 * r * r * h; // 使用更精確的 PI 值
    
    // 核心:fixed 固定小數點 + setprecision(3) 保留三位
    cout << "Radius: " << r << ", Height: " << h << endl;
    cout << "The volume is: " << fixed << setprecision(3) << v << endl;
    
    return 0;
}

常見錯誤提醒

  1. 忘記引入 <iomanip>:會導致編譯錯誤 setprecision 未宣告。
  2. 僅使用 setprecision 而無 fixed:在預設模式下,setprecision 控制的是「有效數字總位數」而非小數位數。
  3. 精度設定過大:超過 double 類型本身精度(約 15-17 位有效數字)無意義,且可能顯示垃圾值。

延伸應用

同樣的技巧適用於所有浮點數輸出場景:財務報表(保留 2 位)、科學計算(保留 6 位以上)、座標顯示等。只需將 setprecision 參數改為所需位數即可。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved