русский
Germany.ruForen → Архив Досок→ Programmierung

астрономия и програмирование

03.01.07 21:21
Re: астрономия и програмирование
 
gothica1982 посетитель
gothica1982
in Antwort Geist2006 29.12.06 23:20
Float - 6 значащих цифр, double - 10. Если вы используете все переменные в float, то естественно при каждой операции получается ошибка в расчетах. Например при умножении как результат получается число, которое занимает больше чем n бит. Остальные биты просто не учитываются, а результат умножения записывается в формате float. И так при каждой операции получается ошибка, которая потом все наростает и наростает при последующих.
Чтобы уменьшить значение этой ошибки нужно увеличить разрядность числа. Для этого вам нужно придумать новый формат числа (например 64 бита) и написать функции сложения, вычитания, умножения и деления для этого формата. То есть например, умножаем число в 64 бита на число в 64 бита, как результат получаем число больше 64 бита, но сохраняем его в 64-битном формате. Существуют еще различные методы округления числа, это тоже необходимо учитывать.
Есть определенные форматы, например fract32 и fract64, которые используются в Visual DSP (можно писать на C и Assembler, но в моем случае проект был написан на С) для процессоров звуковых карт. Форматы были сделаны на основе формата integer, описания всех функций есть в руководстве. Если что, пишите в приват.
 

Sprung zu