我试着用合适的数字分隔符来格式化一些浮点数。在下面的例子中,最后一行输出的格式不正确(它向左移了一位)。
程序:
#include <iostream>
#include <fmt/format.h>
int main()
{
double value1{5.50};
double value2{10.50};
std::cout << fmt::format("{:6.2f} €", value1) << std::endl; // OK
std::cout << fmt::format("{:6.2f} €", value2) << std::endl; // OK
std::locale myLocale("de_DE.UTF-8");
std::cout << fmt::format(myLocale, "{:6.2Lf} €", value1) << std::endl; // OK
std::cout << fmt::format(myLocale, "{:6.2Lf} € <- !!!", value2) << std::endl; // !!!
}
输出:
5.50 €
10.50 €
5,50 €
10,50 € <- !!!
为什么?我做错什么了吗?
1条答案
按热度按时间eeq64g8w1#
我是这么做的
{fmt}
9.1.0并与您的程序链接。我能够重现与您相同的问题。{fmt}
Backbone.js (当前为050293646fc0337cfdb5084bf16f3d6efc84e9d8
)并链接到您的程序。问题没有出现。结论:我怀疑9.1.0有一个bug,在以后的版本中没有出现。我建议基于我使用的提交或以后的提交来重建
{fmt}
。