我正在尝试将旧项目从 Visual Studio 2010 移植到 Visual Studio 2015。问题是 snprintf(与格式“%.15g”一起使用)与 Visual Studio 2010 中使用的轮次不同。
有两个问题:
电子符号从例如 12345e005 更改为 12345e05
像 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 舍入没有影响。