|
|
|
Формат данных ComboBox'a
|
|||
|---|---|---|---|
|
#18+
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 = '^', не помогло Заранее благодарен) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2005, 12:30:41 |
|
||
|
Формат данных ComboBox'a
|
|||
|---|---|---|---|
|
#18+
Похоже, единственный вариант - отображать в комбо STR(<var>,20,0), а потом делать обратное преобразование ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2005, 15:15:55 |
|
||
|
Формат данных ComboBox'a
|
|||
|---|---|---|---|
|
#18+
FoxPro работает с точностью до 16 значащих цифр. Это значит, что любые числовые данные имеющие более 16 значаших цифр будут отображаться некорректно. Не в смысле "неправильно", а в смысле "неточно". Все что, боле 16 значащих цифр будет заполняться случайным образом. Попробуй дать в командом окне команду Код: plaintext 1. 2. 3. 4. 5. Т.е. твоя задача может быть решена только и исключительно в том случае, если ты переведешь свои данные в символьный вид. При этом обратный перевод в числа будет сопровождаться потерей точности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2005, 19:24:04 |
|
||
|
Формат данных ComboBox'a
|
|||
|---|---|---|---|
|
#18+
Спасибо, дошло и помогло! Как сам не догадался?!)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2005, 05:14:57 |
|
||
|
Формат данных ComboBox'a
|
|||
|---|---|---|---|
|
#18+
Хм ... Интересно получается: Код: plaintext 1. Возвращает .T. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2005, 07:37:46 |
|
||
|
Формат данных ComboBox'a
|
|||
|---|---|---|---|
|
#18+
ВладимирМ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 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2005, 09:45:21 |
|
||
|
Формат данных ComboBox'a
|
|||
|---|---|---|---|
|
#18+
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 знаков. Вы вполне здраво понимаете, что храниться будет какое-то ограниченное число значащих цифр, а все остальное, условно говоря, заполняется случайным образом или нулями. Абсолютно то же самое применимо и к остальным числовым типам данных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2005, 12:26:25 |
|
||
|
Формат данных ComboBox'a
|
|||
|---|---|---|---|
|
#18+
Maltsev MaxХм ... Интересно получается: Код: plaintext 1. Возвращает .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 знакам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2005, 12:45:17 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33386530&tid=1593018]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
205ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 539ms |

| 0 / 0 |
