powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Округление
2 сообщений из 2, страница 1 из 1
Округление
    #34635943
shanton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дробное число записываю в две пустых таблицы одинаковых по структуре, только разница в количестве знаков после запятой. После округления в этих таблицах получаю разный результат:
Код: plaintext
1.
2.
3.
4.
5.
6.
CREATE TABLE tab01 (s n( 20 , 8 ))
INSERT INTO tab01 (s) VALUES ( 1162 . 225 )		&& 1162 . 23  - в большую сторону
WAIT ROUND(s, 2 ) WINDOW
*
CREATE TABLE tab02 (s n( 20 , 10 ))
INSERT INTO tab02 (s) VALUES ( 1162 . 225 )		&& 1162 . 22  - в меньшую сторону
WAIT ROUND(s, 2 ) WINDOW
Какая тут закономерность? Большое спасибо!
...
Рейтинг: 0 / 0
Округление
    #34636225
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Существует такое понятие "точность рассчетов". Т.е. с каким числом значащих цифр без потери точности может работать данная программа.

Для FoxPro это 16 значащих цифр. Точнее, чуть меньше. Но поскольку указать точность как дробное число нельзя его и округлили до 16.

Из математики известно, что доверять в этом случае можно только 14 значащим цифрам. 15 цифра будет сомнительной, а 16 будет иметь практически случайное значение.

При размерности N(20,10) сразу получаем 10 значащих цифр на дробную часть. Еще 4 цифры в целой части. Т.е. имеем 14 значащих цифр. Близко к пределу точности рассчетов FoxPro.

Поскольку последняя цифра 5, то получается достаточно "ошибиться" на 1 в меньшую сторону в 15 разряде и получим уже не совсем тот результат, который ожидался. Вероятно, именно это и произошло при выполнении функции ROUND().
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Округление
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]