正确使用std :: cout.precision()-不打印尾随的零]] << [

问题描述 投票:21回答:3
我看到许多有关浮点数精度数的问题,但我特别想知道为什么这段代码

#include <iostream> #include <stdlib.h> int main() { int a = 5; int b = 10; std::cout.precision(4); std::cout << (float)a/(float)b << "\n"; return 0; }

显示0.5?我希望看到0.5000。是否因为原始整数数据类型?

我看到许多有关浮点数精度数的问题,但我特别想知道为什么这段代码#include

#include int main(){int a = 5; ...

c++ floating-point-precision
3个回答
24
投票
#include <iostream> #include <stdlib.h> #include <iomanip> int main() { int a = 5; int b = 10; std::cout << std::fixed; std::cout << std::setprecision(4); std::cout << (float)a/(float)b << "\n"; return 0; }
您需要将std::fixed操纵器传递给cout才能显示尾随零。

4
投票
std::cout.precision(4);告诉

要使用的最大位数


1
投票
行为正确。该参数指定要使用的最大数字位数。这不是最低要求。如果仅跟随零,则不会打印它们,因为小数点末尾的零没有意义。如果要打印零,则需要设置适当的标志:
© www.soinside.com 2019 - 2024. All rights reserved.