|
Непонятный баг
|
|||
---|---|---|---|
#18+
VFP9- попробуйте присвоить переменной значение 8800000000000009 (16 знаков число) а затем запросите на экран ее значение. Выдает 8800000000000010!!! Проверено и на VFP8, то же. Только DOS 2.6 выдает правильно! Та же ситуация, если заполнять поле (N16,0) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2011, 14:59 |
|
Непонятный баг
|
|||
---|---|---|---|
#18+
oldfox, По-моему, не так давно эта тема обсуждалась на FoxClub ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2011, 15:15 |
|
Непонятный баг
|
|||
---|---|---|---|
#18+
Сделайте поиск по ключевому слову "точность". То, что выдает FoxPro for DOS - это случайное совпадение. Может совпасть, а может и не совпасть. Точность в Foxpro - это 15,95 значащих цифры. Поэтому, как правило, говорят о 16 значащих цифрах. Но, строго говоря, чуть меньше. Проблема в том, что в памяти числа храняться в двоичном виде, а отображаются в десятичном. Но точно перевести числа из одной системы исчисления в другую не всегда возможно. Например, Вы не можете точно представить в десятичном виде дробь 1/6. В десятичном представлении это будет нечто вроде 0,666667 - погрешность в последнем знаке. А вот какой знак будет "последним" и определяется системными ограничениями. Для целых чисел это становится актуальным именно при 16 значащих цифрах и более. Поэтому рассчитывать надо только на 15 значащих цифр. Для дробны чисел - это может повлиять вне зависимости от количество значащих цифр из-за особенностей работы с дробной частью. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2011, 16:55 |
|
Непонятный баг
|
|||
---|---|---|---|
#18+
Спасибо ВладимирМ! Жаль найти такой изъян в родном FoxPro... Перейдем на символьные. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2011, 18:12 |
|
Непонятный баг
|
|||
---|---|---|---|
#18+
oldfoxЖаль найти такой изъян в родном FoxPro... Это "изъян" не только FoxPro, но и вообще большинства программ, если только они специально не заточены под работу с большими числами. Это своеобразный стандарт, связанный с работой процессоров. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2011, 20:25 |
|
Непонятный баг
|
|||
---|---|---|---|
#18+
oldfoxПерейдем на символьные.Если не трудно - а зачем вам такая точность вычислений в Фоксе? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2011, 23:06 |
|
Непонятный баг
|
|||
---|---|---|---|
#18+
Точность не требуется. Просто номер полиса ОМС теперь 16 разрядный (числовой), такое поле и сделал. Проблема обнаружилась на одном полисе с числом большим 7500000000000000. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2011, 06:37 |
|
Непонятный баг
|
|||
---|---|---|---|
#18+
В хэлпе на фокс заявлена 16-тизначная точность и есть пометка что реально 15,95 знаков, т.е. не все 16-тизначные точно покажутся, у некоторых возможно изменение на 1 младшего разряда. Это связано с погрешностями преобразования десятичных чисел в восьмибайтное двоичное с плавающей запятой. И касается не только фокса, а всех прог использующих такой тип при расчетах. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2011, 08:05 |
|
Непонятный баг
|
|||
---|---|---|---|
#18+
oldfoxномер полиса ОМС теперь 16 разрядный (числовой), такое поле и сделал. Проблема обнаружилась на одном полисе с числом большим 7500000000000000. Дык это ошибка разработчика при проектировании, а не фокса ;), неправильно выбран тип данных ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2011, 09:53 |
|
Непонятный баг
|
|||
---|---|---|---|
#18+
XAndyoldfoxномер полиса ОМС теперь 16 разрядный (числовой), такое поле и сделал. Проблема обнаружилась на одном полисе с числом большим 7500000000000000. Дык это ошибка разработчика при проектировании, а не фокса ;), неправильно выбран тип данныхУгу. Составление номера полиса из одних только символов цыфр никоим образом не делает этот номер числовым. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2011, 09:56 |
|
|
start [/forum/topic.php?fid=41&msg=37372036&tid=1584253]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 292ms |
total: | 430ms |
0 / 0 |