double的%lf格式化精度默认6位

在一次存储经纬度的字符串时,虽然经纬度是用double存的,但转字符串的精度不对,然后才发现%lf精度默认只有6位。C++20标准提供的format方法倒是可以完整的输出字符串。测试以下代码:

double a = 123.12345678;

printf("%lf \r\n", a);

printf("%.8lf \r\n", a);

printf("%.012lf \r\n", a);

printf("%.03lf \r\n", a);

cout << std::format("{}", a) << endl;

输出为:

123.123457

123.12345678

123.123456780000

123.123

123.12345678

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注