正确使用 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中文网其他相关文章!