Простая математика C ++, дающая неверный результат

Я пишу плагин VSTi, мне нужен коэффициент расчета для части выходного конверта.

В основном я получаю неправильный ответ на математическое выражение, я упростил его в несколько этапов, и он все еще неверен. То же выражение работает на калькуляторе, но оно не будет работать в коде. Я использую отладчик и проверяю содержимое переменных и обнаружил, что 0.25 / 88200 дает результат 2.8344671201814060e-006, а не 0.00000283446712, как и должно быть. Подобная математика ранее в коде функционирует, как и ожидалось.

currentDecCoeff = 0.25 / 88200;
is making currentDecCoeff = 2.8344671201814060e-006 (and not 0.00000283446712)

Все соответствующие переменные имеют двойной тип, я даже ввел его как числовые значения (как указано выше), а не как переменные, и он все равно дает неправильный ответ.

Может ли кто-нибудь пролить свет на то, почему это может происходить, и дать некоторые идеи о том, что можно попробовать, или даже о решении.

Я могу добавить код в контексте, если это необходимо.
ура

Бен

-2

Решение

Запись e-006 значит умножить то, что от меня осталось, на 10 ^ (- 6). Так что, действительно, ваш результат верен.

1

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

Они одинаковы для 9 значащих цифр, посмотрите вверхнаучная нотация.

Чтобы уточнить, научная запись используется, чтобы показать очень маленькие (или очень большие) числа легко, удаляя начальные или конечные нули. Как правило, он имеет следующую форму:

y x 10^z

Чтобы получить значение, решите сумму. C показывает это как:

yEz

Таким образом, 2.4×10 ^ 6 (или 2.4E6) составляет 2400000.

2

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