Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Формат данных ComboBox'a / 9 сообщений из 9, страница 1 из 1
17.11.2005, 12:30:41
    #33383760
Silencer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формат данных ComboBox'a
HI ALL
Проблема такая, в комбо загоняется список значений (из курсора), эти значения представляют собой двадцатизначные числа, первое значение отображается правильно, все двадцать цифр, но в раскрывающемся списке значения преобразуются в формат типа 4,23234+E. При выборе значения из списка формат сохраняется, то есть Value = 4,23234+E.
Вопрос: как сделать так что значения в списке отображались правильно, и соотвественно, "правильным" было и значение?

Код по заполнению комбо:

thisform.combo1.RowSource = T_Cursor.num_sks
thisform.combo1.Value = T_Cursor.num_sks
thisform.combo1.DisplayValue = T_Cursor.num_sks

Плюс пробовал ставить thisform.combo1.format = '^', не помогло

Заранее благодарен)
...
Рейтинг: 0 / 0
17.11.2005, 15:15:55
    #33384408
Andrey Ts
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формат данных ComboBox'a
Похоже, единственный вариант - отображать в комбо
STR(<var>,20,0),
а потом делать обратное преобразование
...
Рейтинг: 0 / 0
17.11.2005, 19:24:04
    #33385226
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формат данных ComboBox'a
FoxPro работает с точностью до 16 значащих цифр. Это значит, что любые числовые данные имеющие более 16 значаших цифр будут отображаться некорректно.

Не в смысле "неправильно", а в смысле "неточно". Все что, боле 16 значащих цифр будет заполняться случайным образом.

Попробуй дать в командом окне команду

Код: plaintext
1.
2.
3.
4.
5.
? 1234567890123456 
? 12345678901234567 
? 123456789012345678 
? 1234567890123456789 
? 12345678901234567890 

Т.е. твоя задача может быть решена только и исключительно в том случае, если ты переведешь свои данные в символьный вид. При этом обратный перевод в числа будет сопровождаться потерей точности.
...
Рейтинг: 0 / 0
18.11.2005, 05:14:57
    #33385631
Silencer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формат данных ComboBox'a
Спасибо, дошло и помогло! Как сам не догадался?!))
...
Рейтинг: 0 / 0
18.11.2005, 07:37:46
    #33385694
Maltsev Max
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формат данных ComboBox'a
Хм ...
Интересно получается:
Код: plaintext
1.
? 12345678901234567 - [b]7 [/b]= 12345678901234567 - [b]9 [/b]

Возвращает .T.
...
Рейтинг: 0 / 0
18.11.2005, 09:45:21
    #33385860
Andrey Ts
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формат данных ComboBox'a
ВладимирМFoxPro работает с точностью до 16 значащих цифр. Это значит, что любые числовые данные имеющие более 16 значаших цифр будут отображаться некорректно.

Тогда прошу пояснить:
VFP5 Help
Currency value is out of range (Error 1988)
-------------------
The maximum size of a numeric or float field is 20 digits.

так все же 20 или 16 ?
...
Рейтинг: 0 / 0
18.11.2005, 12:26:25
    #33386530
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формат данных ComboBox'a
Andrey Ts ВладимирМFoxPro работает с точностью до 16 значащих цифр. Это значит, что любые числовые данные имеющие более 16 значаших цифр будут отображаться некорректно.

Тогда прошу пояснить:
VFP5 Help
Currency value is out of range (Error 1988)
-------------------
The maximum size of a numeric or float field is 20 digits.

так все же 20 или 16 ?

Есть разница между терминами "размерность" и "точность".

VFP5 Help
Visual FoxPro System Capacities
----------
Digits of precision in numeric computations 16


Хранить в полях типа Numeric (Float) и Currency можно до 20 знаков, но доверять можно только первым 16 значащим цифрам.

Вы, почему-то, ссылаетесь на поле типа Numeric (Float) и Currency, а почему не ссылаетесь на поле Double? Там можно хранить числа до 300 степени.

Вы же не настаиваете на том, что должны храниться все 300 знаков. Вы вполне здраво понимаете, что храниться будет какое-то ограниченное число значащих цифр, а все остальное, условно говоря, заполняется случайным образом или нулями. Абсолютно то же самое применимо и к остальным числовым типам данных
...
Рейтинг: 0 / 0
18.11.2005, 12:45:17
    #33386604
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формат данных ComboBox'a
Maltsev MaxХм ...
Интересно получается:
Код: plaintext
1.
? 12345678901234567 - [b]7 [/b]= 12345678901234567 - [b]9 [/b]

Возвращает .T.

Igor Korolyov
написано 09.10.04 02:45

--------------------------------------------------------------------------------

Всё дело в формате хранения числовых данных - битовом естественно.

1 бит на знак, 11 бит на порядок (опять-же порядок делится на 2 - имеются положительные и отрицательные степени) и 52 бита на мантиссу (плюс один неявный бит) - вот и точность в "чуть меньше" 16-ти десятичных разрядов.

А что при вычислениях она теряется - то конечно Не зря в процессорах
(раньше даже отдельные мат. сопроцессоры, теперь - интегрированный FPU)
имеется 10-байтовый тип хранения дробных чисел - чтобы в результате
вычислений выйти хотя-бы на 8 байт более-менее точного числа

Чтоб было понятно про точность

2^52 = 4,503,599,627,370,496

Т.е. разрядов, конечно, 16, но неполных 16. Это не 16 девяток, а примерно половина. Даже если добавить один неявный бит, получим все-равно несколько меньше 16.

2^53 = 9,007,199,254,740,992

Да и при любом раскладе, из мат.теории известно, что если точность расчета составляет 16, то последний знак будет недостоверен, а предпоследний - сомнителен (хотя и близок к реальному). Т.е. доверять следует не более чем первым 14 знакам.
...
Рейтинг: 0 / 0
18.11.2005, 13:46:27
    #33386806
Andrey Ts
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формат данных ComboBox'a
2 ВладимирМ

Понял, спасибо
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Формат данных ComboBox'a / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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