gpt4 book ai didi

c++ - 如何使用 fmt 库格式化带十进制逗号的 float ?

转载 作者:可可西里 更新时间:2023-11-01 16:16:44 25 4
gpt4 key购买 nike

我想使用 fmt 库格式化 float 。

我尝试使用小数分隔符“,”来格式化 float ,但没有成功:

#include <iostream>
#include <fmt/format.h>
#include <fmt/locale.h>

struct numpunct : std::numpunct<char> {
protected:
char do_decimal_point() const override
{
return ',';
}
};

int main(void) {
std::locale loc;
std::locale l(loc, new numpunct());
std::cout << fmt::format(l, "{0:f}", 1.234567);
}

输出为 1.234567。我想要 1,234567

更新:

我浏览了 fmt 库的源代码,认为 float 的小数点分隔符是 hard coded,不符合当前语言环境。

我刚开了一个issue in the fmt library

最佳答案

fmt 库决定将语言环境作为第一个参数传递,仅用于覆盖此调用的全局语言环境。根据设计,它不适用于具有 f 格式说明符的参数。

要使用区域设置格式化 float ,必须使用格式说明符 L,例如:

std::locale loc(std::locale(), new numpunct());
std::cout << fmt::format(loc, "{0:L}", 1.234567);

从修订版 1d3e3d 开始,L 格式说明符支持浮点参数。

关于c++ - 如何使用 fmt 库格式化带十进制逗号的 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56864283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com