Арифметические операции с плавающей точкой в ФБП



Posted by Анатолий Анимица on June 28, 1999 at 05:09:00:

In Reply to: Неужели я нашел ошибку? posted by Олег, Тула on June 27, 1999 at 13:49:53:

Анекдот из просторов Интернета:

На красный свет проезжает водитель. Старый гаишник отправляет молодого задержать нарушителя. Задерживает. Представляется. Спрашивает:

- Вы почему нарушаете?

- А я задумался!

- О чем это?

- А почему 3+3=6, и в то же время 3*3=9 ?
Молчание, фуражка на затылок. Старый гаишник видит непорядок и подзывает молодого:

- В чем дело?

- Да, товарищи сержант, вот, 2*2= и т.д.

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

Ошибка действительно существует, причем только в UltraF(H) и связана с реализацией [ro ..]. Правильно писать [tr x+0.5] - об этом уже были сообщения. В связи с тем, что сервер скомпилирован 32-разрядным (Watcom C++) - в нем функция верна всегда, [ro 0.5]=1.
У меня это обстоятельство так и используется - в зависимости от [ro 0.5]=0 или 1 файл-коэффициент понимает, кто его сейчас выполняет - Ultra или сервер.





Пpишедшие ответы: