📜  C++中的std :: fixed,std :: scientific,std :: hexfloat,std :: defaultfloat(1)

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

C++中的std::fixed、std::scientific、std::hexfloat和std::defaultfloat介绍

在C++的标准库中,有四个与浮点数格式化相关的标志:std::fixedstd::scientificstd::hexfloatstd::defaultfloat。这些标志可以帮助程序员控制浮点数的输出格式。下面将分别介绍这四个标志的作用和用法。

std::fixed

std::fixed是一个用于控制浮点数输出格式的标志。使用该标志后,浮点数将以固定小数位数的形式输出。小数位数可以通过调用std::setprecision函数来设置。以下是一个示例:

#include <iostream>
#include <iomanip>

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

输出结果为:

3.14

在上面的示例中,std::fixed将浮点数输出格式设为固定小数位数,即小数点后保留两位。

std::scientific

std::scientific是一个用于控制浮点数输出格式的标志。使用该标志后,浮点数将以科学计数法的形式输出。精度可以通过调用std::setprecision函数来设置。以下是一个示例:

#include <iostream>
#include <iomanip>

int main() {
    double number = 123456.789;
    std::cout << std::scientific << std::setprecision(3) << number << std::endl;
    return 0;
}

输出结果为:

1.235e+05

在上面的示例中,std::scientific将浮点数输出格式设为科学计数法,即以e表示指数形式输出。

std::hexfloat

std::hexfloat是一个用于控制浮点数输出格式的标志。使用该标志后,浮点数将以十六进制的形式输出。以下是一个示例:

#include <iostream>
#include <iomanip>

int main() {
    double number = 10.125;
    std::cout << std::hexfloat << number << std::endl;
    return 0;
}

输出结果为:

0x1.40a0000000000p+3

在上面的示例中,std::hexfloat将浮点数输出格式设为十六进制。

std::defaultfloat

std::defaultfloat是一个用于恢复浮点数输出格式的标志。如果之前使用了std::fixedstd::scientificstd::hexfloat标志,可以使用std::defaultfloat将输出格式恢复为默认的格式。以下是一个示例:

#include <iostream>
#include <iomanip>

int main() {
    double number = 3.14159;
    std::cout << std::fixed << std::setprecision(2) << number << std::endl;
    std::cout << std::defaultfloat << number << std::endl;
    return 0;
}

输出结果为:

3.14
3.14159

在上面的示例中,第一个std::cout使用std::fixed将浮点数输出格式设为固定小数位数,第二个std::cout使用std::defaultfloat将输出格式恢复为默认格式。

以上是C++中的std::fixedstd::scientificstd::hexfloatstd::defaultfloat的介绍和用法,通过这些标志,程序员可以更灵活地控制浮点数的输出格式。