C++ cout 流輸出行為詳解:精度控制、科學計數法與字符串限制
注意:本文內容屬於 C++ 標準庫 iostream 範疇,非 PHP 技術。 收錄於此或為分類錯誤,但技術內容有參考價值,整理如下。
數值輸出精度規則
cout 默認顯示總位數 6 位(整數位 + 小數位),超出四捨五入:
| 代碼 | 輸出 | 說明 |
cout << 123.4567; | 123.457 | 四捨五入至 6 位 |
cout << 123.4564; | 123.456 | 四捨五入 |
cout << 123456.1; | 123456 | 整數位佔 6 位,小數捨去 |
cout << 123456.5; | 123457 | 整數位進位 |
變量輸出與類型關係
- int 型:按原型輸出,無精度限制。範圍約 -21 億 ~ 21 億 (32 位有符號)。
- double 型:≤6 位按原型,>6 位自動切換科學計數法(如
1.23457e+08)。
- 全球人口約 60 億:超出 int 範圍,必須用
double 或 long double。
- 賦值越界:編譯器不報錯、不警告,極易產生隱性 Bug。
字符串輸出限制
- 字符串字面量:理論無長度限制,但受編譯器單行長度限制,過長導致編譯錯誤。
- 字符數組 (char[]):實測 50,000 字符正常輸出,
memset 越界賦值也無報錯(屬未定義行為,極度危險)。
控制輸出格式的正規方法
#include <iomanip>
cout << fixed << setprecision(2) << 3.14159; // 固定 2 位小數: 3.14
cout << scientific << setprecision(4) << 12345.6; // 科學計數法 4 位: 1.2346e+04
cout << setw(10) << setfill('0') << 42; // 寬度 10,前導 0: 0000000042
總結
- 默認精度 6 位,務必顯式設置
setprecision 避免隱性截斷。
- 大整數用
long long (C++11) 或 int64_t,浮點用 double/long double。
- 字符數組操作必須邊界檢查,
std::string 更安全。
若需 PHP 輸出格式控制,請參考 printf()、number_format()、sprintf() 等函數。
- 上一篇文章: PHP 變量定義完全指南:語法規則、類型系統與輸出實戰
- 下一篇文章: PHP 防 SQL 注入:addslashes vs mysql_real_escape_string 深度對比
Copyright ©
程式碼之家 All Rights Reserved