gpt4 book ai didi

c++ - printf 的浮点格式标志 (%f) 仅适用于英文数字格式

转载 作者:搜寻专家 更新时间:2023-10-31 01:29:56 25 4
gpt4 key购买 nike

我正在将数据写入可在多台计算机上打开的文件中。问题是,当我使用“%f”格式化标志格式化 float 时,函数的 printf 变体 (wprintf, CString::FormatStringCchPrintf 等)使其特定于区域设置。

例如:

double f = 1.5;
WCHAR buff[256];
StringCchPrintf(buff, 256, L"%f", f);

将为美式英语输出 "1.5",但随后可能为某些欧洲语言环境输出 "1,5",等等。

所以我很好奇是否有除 %f 之外的标志仅以一种格式输出 float ? (最好是英文。)

最佳答案

考虑到这个问题被标记为 C++:使用来自 std::num_putstd::numpunct 的格式用于 ”C” 语言环境.最简单的方法是使用合适的 std::ostreamimbue()ing std::locale::classic() .

一条评论建议编写自己的转换函数:我建议不要这样做,因为正确实现此转换并非易事。参见 How to Print Floating-Point Numbers Accurately .

关于c++ - printf 的浮点格式标志 (%f) 仅适用于英文数字格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48968409/

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