我在我的项目中完全实现了 fmt 库。但我发现的最后一个错误是,以前的值四舍五入到上限 (0.5 -> 1),而它们目前被四舍五入到下限 (0.5 -> 0)。
在尝试查找原因时,我发现:
double halfd = 0.5;
std::string str = fmt::format("{:.0f}", halfd ); // result: "0"
float halff = 0.5f
std::string str = fmt::format("{:.0f}", halff ); // result: "0"
我也试过,如果编译器可能将 0.5 存储为 0.49999999999 ...,但我找不到原因。
我使用带有 v140 编译器的 Microsoft Visual Studio 2017。
有谁知道为什么 fmt 将 0.5 舍入为 0,而不是 1。我以前使用标准 printf 库。