Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Непонятный баг / 10 сообщений из 10, страница 1 из 1
28.07.2011, 14:59
    #37371020
oldfox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятный баг
VFP9- попробуйте присвоить переменной значение 8800000000000009 (16 знаков число)
а затем запросите на экран ее значение. Выдает 8800000000000010!!!
Проверено и на VFP8, то же. Только DOS 2.6 выдает правильно! Та же ситуация,
если заполнять поле (N16,0)
...
Рейтинг: 0 / 0
28.07.2011, 15:15
    #37371059
IgorNG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятный баг
oldfox,
По-моему, не так давно эта тема обсуждалась на FoxClub
...
Рейтинг: 0 / 0
28.07.2011, 16:55
    #37371326
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятный баг
Сделайте поиск по ключевому слову "точность". То, что выдает FoxPro for DOS - это случайное совпадение. Может совпасть, а может и не совпасть.

Точность в Foxpro - это 15,95 значащих цифры. Поэтому, как правило, говорят о 16 значащих цифрах. Но, строго говоря, чуть меньше.

Проблема в том, что в памяти числа храняться в двоичном виде, а отображаются в десятичном. Но точно перевести числа из одной системы исчисления в другую не всегда возможно. Например, Вы не можете точно представить в десятичном виде дробь 1/6. В десятичном представлении это будет нечто вроде 0,666667 - погрешность в последнем знаке. А вот какой знак будет "последним" и определяется системными ограничениями.

Для целых чисел это становится актуальным именно при 16 значащих цифрах и более. Поэтому рассчитывать надо только на 15 значащих цифр. Для дробны чисел - это может повлиять вне зависимости от количество значащих цифр из-за особенностей работы с дробной частью.
...
Рейтинг: 0 / 0
28.07.2011, 18:12
    #37371521
oldfox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятный баг
Спасибо ВладимирМ!
Жаль найти такой изъян в родном FoxPro...
Перейдем на символьные.
...
Рейтинг: 0 / 0
28.07.2011, 20:25
    #37371709
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятный баг
oldfoxЖаль найти такой изъян в родном FoxPro...
Это "изъян" не только FoxPro, но и вообще большинства программ, если только они специально не заточены под работу с большими числами. Это своеобразный стандарт, связанный с работой процессоров.
...
Рейтинг: 0 / 0
28.07.2011, 23:06
    #37371864
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятный баг
oldfoxПерейдем на символьные.Если не трудно - а зачем вам такая точность вычислений в Фоксе?
...
Рейтинг: 0 / 0
29.07.2011, 06:37
    #37372005
oldfox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятный баг
Точность не требуется. Просто номер полиса ОМС теперь 16 разрядный (числовой), такое поле и сделал.
Проблема обнаружилась на одном полисе с числом большим 7500000000000000.
...
Рейтинг: 0 / 0
29.07.2011, 08:05
    #37372036
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятный баг
В хэлпе на фокс заявлена 16-тизначная точность и есть пометка что реально 15,95 знаков, т.е. не все 16-тизначные точно покажутся, у некоторых возможно изменение на 1 младшего разряда.
Это связано с погрешностями преобразования десятичных чисел в восьмибайтное двоичное с плавающей запятой. И касается не только фокса, а всех прог использующих такой тип при расчетах.
...
Рейтинг: 0 / 0
29.07.2011, 09:53
    #37372140
XAndy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятный баг
oldfoxномер полиса ОМС теперь 16 разрядный (числовой), такое поле и сделал.
Проблема обнаружилась на одном полисе с числом большим 7500000000000000.

Дык это ошибка разработчика при проектировании, а не фокса ;), неправильно выбран тип данных
...
Рейтинг: 0 / 0
29.07.2011, 09:56
    #37372147
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятный баг
XAndyoldfoxномер полиса ОМС теперь 16 разрядный (числовой), такое поле и сделал.
Проблема обнаружилась на одном полисе с числом большим 7500000000000000.

Дык это ошибка разработчика при проектировании, а не фокса ;), неправильно выбран тип данныхУгу. Составление номера полиса из одних только символов цыфр никоим образом не делает этот номер числовым.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Непонятный баг / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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