Изменено двойное округление snprintf в VS2015 по сравнению с VS2010

Я пытаюсь перенести старый проект из Visual Studio 2010 в Visual Studio 2015.
Проблема в том, что snprintf (используется с форматом «% .15g») удваивается иначе, чем в Visual Studio 2010.

Есть две проблемы:

  1. Электронная запись изменилась с, например, От 12345e005 до 12345e05

  2. Двойные значения, такие как 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.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]