正確使用std::cout. precision() 顯示尾隨零
在C 處理浮點數時, std::cout. precision() 方法對於控制顯示的小數位數至關重要。但是,在某些情況下,使用者會遇到意外結果,例如缺少尾隨零。
考慮以下程式碼:
int main() { int a = 5; int b = 10; std::cout.precision(4); std::cout << (float)a / (float)b << "\n"; return 0; }
此程式碼嘗試列印兩個整數相除的結果(5 和 10),精確到小數點後 4 位。然而,輸出是“0.5”而不是預期的“0.5000”。
這種行為的原因在於數字「a」和「b」最初儲存為整數。當我們執行除法時,結果預設也是一個整數。為了正確顯示浮點數,我們需要明確地將它們轉換為浮點數,如以下行所示:
std::cout << (float)a / (float)b << "\n";
但是,即使在轉換為浮點數之後,仍然缺少尾隨零。這就是 std::fixed 操縱器發揮作用的地方。為了確保顯示尾隨零,我們必須將 std::fixed 操縱器傳遞給 std::cout。此操縱器對浮點數值進行舍入並以定點表示法顯示它。
修正後的程式碼是:
int main() { int a = 5; int b = 10; std::cout << std::fixed; std::cout.precision(4); std::cout << (float)a / (float)b << "\n"; return 0; }
包含 std::fixed 後,輸出現在正確顯示“0.5000”,遵循指定的 4 位小數精度。
以上是為什麼 `std::cout. precision()` 不顯示 C 中浮點數的尾隨零?的詳細內容。更多資訊請關注PHP中文網其他相關文章!