Изменено двойное округление snprintf в VS2015 по сравнению с VS2010
Я пытаюсь перенести старый проект из Visual Studio 2010 в Visual Studio 2015. Проблема в том, что snprintf (используемый с форматом "%.15g") удваивается иначе, чем в Visual Studio 2010.
Есть две проблемы:
Электронная нотация изменена, например, с 12345e005 на 12345e05
Двойные значения, такие как 105.52361792790150, теперь преобразуются в "105.523617927901" вместо "105.523617927902".
Я нашел причину "пропущенной" нулевой цифры:
Microsoft намеренно изменила его, чтобы сделать его более совместимым со стандартами: https://blogs.msdn.microsoft.com/vcblog/2014/06/18/c-runtime-crt-features-fixes-and-breaking-changes-in-visual-studio-14-ctp1/(см. "Форматирование экспоненты")
Я реализовал решение, чтобы добавить отсутствующую нулевую цифру, но я не могу найти решение для другого поведения округления.
Есть ли способ изменить поведение округления на "старый стиль"? Я пробовал std::fesetround, но, похоже, он не влияет на округление snprintf.