0

我正在尝试将旧项目从 Visual Studio 2010 移植到 Visual Studio 2015。问题是 snprintf(与格式“%.15g”一起使用)与 Visual Studio 2010 中使用的轮次不同。

有两个问题:

  1. 电子符号从例如 12345e005 更改为 12345e05

  2. 像 105.52361792790150 这样的双精度现在转换为“105.523617927901”而不是“105.523617927902”。

我找到了“丢失”零位的原因:

微软有意将其更改为更符合标准: https ://blogs.msdn.microsoft.com/vcblog/2014/06/18/c-runtime-crt-features-fixes-and-break-changes-in-visual- studio-14-ctp1/ (参见“指数格式”)

我实现了一个解决方案来添加缺少的零位,但我找不到不同舍入行为的解决方案。

有什么方法可以将舍入行为更改为“旧样式”?我试过 std::fesetround 但它似乎对 snprintf 舍入没有影响。

4

0 回答 0