shkal 0 15 августа, 2011 Опубликовано 15 августа, 2011 (изменено) · Жалоба Имеем вычисление по простейшей формуле F=A*B/C. A, B, C имеют тип long int, F - long double. Строка F=(((long double)(А))*B )/С; при А=65535, В=2500000, С=5000002 даёт результат, совпадающий с виндовым калькулятором только до 9 знака. Где я теряю точность? Компилятор Микрочип С30, мк PIC24H. Изменено 15 августа, 2011 пользователем shkal Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sergeeff 1 15 августа, 2011 Опубликовано 15 августа, 2011 · Жалоба Имеем вычисление по простейшей формуле F=A*B/C. A, B, C имеют тип long int, F - long double. Строка F=(((long double)(А))*B )/С; при А=65535, В=2500000, С=5000002 даёт результат, совпадающий с виндовым калькулятором только до 9 знака. Где я теряю точность? Компилятор Микрочип С30, мк PIC24H. А вас погрешность в одну миллиардную не устраивает? Или это чисто из спортивного интереса? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 15 15 августа, 2011 Опубликовано 15 августа, 2011 · Жалоба Где я теряю точность? А чему равен sizeof(long double)? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shkal 0 15 августа, 2011 Опубликовано 15 августа, 2011 · Жалоба 64 бита стандартный IEEE-754 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shkal 0 16 августа, 2011 Опубликовано 16 августа, 2011 · Жалоба Сорри, разобрался, всё правильно считается. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться