powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Формат данных ComboBox'a
9 сообщений из 9, страница 1 из 1
Формат данных ComboBox'a
    #33383760
Silencer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Формат данных ComboBox'a
    #33384408
Andrey Ts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже, единственный вариант - отображать в комбо
STR(<var>,20,0),
а потом делать обратное преобразование
...
Рейтинг: 0 / 0
Формат данных ComboBox'a
    #33385226
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FoxPro работает с точностью до 16 значащих цифр. Это значит, что любые числовые данные имеющие более 16 значаших цифр будут отображаться некорректно.

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

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

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

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

Возвращает .T.
...
Рейтинг: 0 / 0
Формат данных ComboBox'a
    #33385860
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 ?
...
Рейтинг: 0 / 0
Формат данных ComboBox'a
    #33386530
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Формат данных ComboBox'a
    #33386604
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Формат данных ComboBox'a
    #33386806
Andrey Ts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ВладимирМ

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


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