Я пытаюсь перенести старый проект из 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.
Задача ещё не решена.
Других решений пока нет …