📜  在 C++ 上的浮点数上设置小数位数(1)

📅  最后修改于: 2023-12-03 15:37:18.465000             🧑  作者: Mango

在 C++ 上的浮点数上设置小数位数

在 C++ 中,浮点数的输出默认只保留 6 位小数。但有时我们需要设置更多或更少的小数位数。这篇文章将介绍如何在 C++ 中设置浮点数的小数位数。

使用 std::setprecision

C++ 中定义了一个 iomanip 的库,其中的 std::setprecision 可以用来设置小数点后的精度。

例如下面的代码设置输出小数点后 2 位:

#include <iostream>
#include <iomanip>

int main()
{
    double num = 3.14159265358979323846;
    std::cout << std::fixed << std::setprecision(2) << num << std::endl;
    return 0;
}

输出为:

3.14

其中,std::fixed 用于将浮点数转换为常规小数形式,即不使用科学计数法。

std::setprecision 的参数表示需要保留的小数点后的位数。

使用 std::ostringstream

如果需要将一个浮点数转换为字符串并设置小数点后的位数,可以使用 std::ostringstream。

以下是一个示例代码:

#include <iostream>
#include <sstream>
#include <iomanip>

int main()
{
    double num = 3.14159265358979323846;
    std::ostringstream os;
    os << std::fixed << std::setprecision(2) << num;
    std::string str = os.str();
    std::cout << str << std::endl;
    return 0;
}

输出为:

3.14

其中,std::setprecision 的参数表示需要保留的小数点后的位数。

注意事项
  • 在使用 std::setprecision 的时候,需要先使用 std::fixed 将浮点数转换为常规小数形式。
  • 浮点数的精度受到机器的位数限制,不同机器的精度可能不同。
  • 使用 std::setprecision 或 std::ostringstream 只改变了输出的格式,浮点数的实际精度并没有改变。
总结

本文介绍了在 C++ 中如何设置浮点数的小数位数,使用了 std::setprecision 和 std::ostringstream 两种方式。

希望对你有所帮助!