:: Visual Foxpro, Foxpro for DOS
формат numeric
danton1973
Автор

Сообщений: 143
Откуда: Пермь
Дата регистрации: 10.08.2020
Насколько оправдано хранение чисел в таблице в формате numeric? Насколько я понимаю - это хранение числа в текстовом виде. Т.е. при обращению к значению поля, каждый раз происходит преобразование val()-str(). Получается удобнее хранить в виде Integer, Double, Float, и быстрее при работе.
Правда при это надо будет учитывать:
IF INLIST(VARTYPE(m.lcReprocess),'N','I','F','O')
вместо
IF VARTYPE(m.lcReprocess)=='N'
Ratings: 0 negative/0 positive
Re: формат numeric
akvvohinc

Сообщений: 4203
Откуда: Москва
Дата регистрации: 11.11.2008
Цитата:
Получается удобнее хранить в виде Integer, Double, Float, и быстрее при работе.
1) отдельного формата Float не существует - это просто синоним формата Numeric (для обратной совместимости).

2) "удобнее хранить" - не знаю, в чем это выражается, я не думаю об этом при работе над задачей, а значит, мне одинаково удобен/не удобен любой из этих форматов.

3) "быстрее при работе" - это еще надо "доказать" - в конце концов в таблице все значения представляют собой просто некоторое количество байтов (символов), с которыми выполняются какие-то действия при считывании в память. И это явно не Фоксовские функции VAL()/ STR().

4)
danton1973
Правда при это надо будет учитывать:
IF INLIST(VARTYPE(m.lcReprocess),'N','I','F','O')

Даже не знаю, где вы такое прочитали - функция VARTYPE() для всех ваших типов возвращает только 'N'.

5) формат Integer стоит здесь особняком - вы не можете напрямую им пользоваться для хранения нецелых чисел, тогда уж лучше вести речь о Currency при противопоставлении его Numeric (я именно так и делаю, если количество десятичных знаков не превышает 4 - использую Currency).

Я полагаю, что никто и не пользуется Numeric в тех случаях, когда можно использовать Integer.
Такое могло сохраниться лишь как рудимент с тех времен, когда формата Integer не существовало.



Исправлено 3 раз(а). Последнее : akvvohinc, 05.10.21 14:31
Ratings: 0 negative/0 positive
Re: формат numeric
Taran

Сообщений: 13623
Откуда: Красноярск
Дата регистрации: 16.01.2008
akvvohinc
Я полагаю, что никто и не пользуется Numeric в тех случаях, когда можно использовать Integer.
Такое могло сохраниться лишь как рудимент с тех времен, когда формата Integer не существовало.

Для значения к примеру от 0 до 9 можно использовать Integer? Можно. Но N(1) компактней.
Так что "полагать" в данном случае выглядит двусмысленно:
думать;
лагать или нести лажу.



Исправлено 1 раз(а). Последнее : Taran, 05.10.21 22:34
Ratings: 0 negative/0 positive
Re: формат numeric
Ydin

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
danton1973
IF INLIST(VARTYPE(m.lcReprocess),'N','I','F','O')

Help - VARTYPE:
'O' - Object
'N' - Numeric, Float, Double, or Integer

?



Исправлено 3 раз(а). Последнее : Ydin, 05.10.21 20:47
Ratings: 0 negative/0 positive
Re: формат numeric
akvvohinc

Сообщений: 4203
Откуда: Москва
Дата регистрации: 11.11.2008
Taran
Так что "полагать" в данном случае выглядит двусмысленно

Значит, я ошибся в своем предположении.

Тогда скажу про себя - я никогда не стану пользоваться N(1) только потому, что так компактнее.
Гораздо существенней, что редко когда можно быть уверенным, что N(1) за время жизненного цикла проги не превратится в N(2) или более.
И тогда более чем вероятно, что изменениями только структуры (хотя и это совсем не подарок) здесь не обойдётся.
Ну, и кому тогда нужны эти несколько процентов компактности? Уже ж не 80-е и даже не 90-е годы.
Ratings: 0 negative/0 positive
Re: формат numeric
Taran

Сообщений: 13623
Откуда: Красноярск
Дата регистрации: 16.01.2008
akvvohinc
Taran
Так что "полагать" в данном случае выглядит двусмысленно

Значит, я ошибся в своем предположении.

Вот жеж блин, не споришь.
Я зацепить хотел в отместку за макро.
Не проканало.
Ну тогда

N(1)
Банальный табель оценок. Колонок и строк мильен и разрядность никогда не повысится.
А экономия м.б. существенна.
Ну и пр.
Ratings: 0 negative/0 positive
Re: формат numeric
akvvohinc

Сообщений: 4203
Откуда: Москва
Дата регистрации: 11.11.2008
Taran
разрядность никогда не повысится.

Я - "опытный пессимист", и таким словам не верю by default.
Ratings: 0 negative/0 positive
Re: формат numeric
danton1973
Автор

Сообщений: 143
Откуда: Пермь
Дата регистрации: 10.08.2020
Ydin
danton1973
IF INLIST(VARTYPE(m.lcReprocess),'N','I','F','O')

Help - VARTYPE:
'O' - Object
'N' - Numeric, Float, Double, or Integer

?
m.tmpstr=$123
?VARTYPE(m.tmpstr)
Y
Ratings: 0 negative/0 positive
Re: формат numeric
akvvohinc

Сообщений: 4203
Откуда: Москва
Дата регистрации: 11.11.2008
danton1973
m.tmpstr=$123
?VARTYPE(m.tmpstr)
Y

Этот тип данных называется Currency.
В вашем "списке" его не было.



Исправлено 2 раз(а). Последнее : akvvohinc, 06.10.21 09:46
Ratings: 0 negative/0 positive
Re: формат numeric
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Taran
N(1)
Банальный табель оценок. Колонок и строк мильен и разрядность никогда не повысится.
Во-первых зачем такого рода табель хранить с "мильёном колонок", если достаточно всего одной?

Во-вторых "оценки" в той же РБ сейчас идут по 10-балльной шкале. Есть страны где в ходу 100-балльная система. Где-то вообще буквами оценивают. Так что "разрядность никогда не повысится" - это необоснованное допущение, которое многократно опровергается практикой.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: формат numeric
Taran

Сообщений: 13623
Откуда: Красноярск
Дата регистрации: 16.01.2008
Igor Korolyov
Taran
N(1)
Банальный табель оценок. Колонок и строк мильен и разрядность никогда не повысится.
Во-первых зачем такого рода табель хранить с "мильёном колонок", если достаточно всего одной?

Во-вторых "оценки" в той же РБ сейчас идут по 10-балльной шкале. Есть страны где в ходу 100-балльная система. Где-то вообще буквами оценивают. Так что "разрядность никогда не повысится" - это необоснованное допущение, которое многократно опровергается практикой.

Ай, да я "догадываюсь" что в данном случае достаточно одной колонки. Че умничать то?
Да и про "хранить" я не говорил.
Варианты могут быть всякие.
Или че, матрицу для вязания крестиком подставки под стакан тоже в одной колонке хранить?
Денормализация иногда бывает нужна и полезна.
..
А разве в N(1) не поместится десятибальная оценка?
..
Есть много всяких стран, и как оценить что поставить 56 или 57 при 100 бальной системе?
Оценки в буквах тут вообще к чему? Они пишутся в Integer?
Че всякую чушь собирать со всего мира и думать о гипотетических расширениях?
Хренак и гиперинфляция. Так сколько знаков надо.

Я говорю про "здесь и сейчас".
Или все символьные всегда надо делать C(255)?

Все по обстоятельствам и со здравым смыслом, закладывая некоторый запас на обозримое будущее.
Что-то я не видел на городских машинах бензобак как у дальнобоев.



Исправлено 1 раз(а). Последнее : Taran, 06.10.21 22:27
Ratings: 0 negative/0 positive
Re: формат numeric
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
() умных скопилось слишком много, потому и фокс прикрыли )
Ratings: 0 negative/0 positive
Re: формат numeric
Ydin

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
of63
() умных скопилось слишком много, потому и фокс прикрыли )
Надо что-то делать?
Ratings: 0 negative/0 positive
Re: формат numeric
akvvohinc

Сообщений: 4203
Откуда: Москва
Дата регистрации: 11.11.2008
Taran
А разве в N(1) не поместится десятибальная оценка?

Нет.
Ratings: 0 negative/0 positive
Re: формат numeric
Taran

Сообщений: 13623
Откуда: Красноярск
Дата регистрации: 16.01.2008
akvvohinc
Taran
А разве в N(1) не поместится десятибальная оценка?

Нет.

И опять мимо.
Либо оценки нет и нет соотв. ячейки либо в ней Null.
Либо 10 вариантов от 0 до 9.
А при выводе на экран добавляем единицу.
Ratings: 0 negative/0 positive
Re: формат numeric
akvvohinc

Сообщений: 4203
Откуда: Москва
Дата регистрации: 11.11.2008
Taran
Либо оценки нет и нет соотв. ячейки либо в ней Null.
Либо 10 вариантов от 0 до 9.

Это подлог.
Null не хранится в N(1) и тоже требует памяти.

Так что если вопрос "чисто теоретический", то я могу хранить в N(1) 2^8 = 256 значений, не считая твоего Null.

Цитата:
А при выводе на экран добавляем единицу.
А при такой постановке вопроса ни N(1), ни даже N(2) вообще не нужны - используй C(1),
"а при выводе на экран преобразуй хранимое в желаемое".



Исправлено 1 раз(а). Последнее : akvvohinc, 07.10.21 00:41
Ratings: 0 negative/0 positive
Re: формат numeric
Taran

Сообщений: 13623
Откуда: Красноярск
Дата регистрации: 16.01.2008
akvvohinc
Taran
Либо оценки нет и нет соотв. ячейки либо в ней Null.
Либо 10 вариантов от 0 до 9.

Это подлог.
Null не хранится в N(1) и тоже требует памяти.

Так что если вопрос "чисто теоретический", то я могу хранить в N(1) 2^8 = 256 значений, не считая твоего Null.

256 значений в одном байте это не новость.
Только не N(1), а C(1) binary. Или типа.
Ratings: 0 negative/0 positive
Re: формат numeric
akvvohinc

Сообщений: 4203
Откуда: Москва
Дата регистрации: 11.11.2008
Taran
Только не N(1), а C(1) binary.

Если рамки дозволенного определяю я, то я могу хранить эти 256 в поле N(1),
а как при этом я буду выводить значение на экран - моя проблема - справлюсь.
Ratings: 0 negative/0 positive
Re: формат numeric
akvvohinc

Сообщений: 4203
Откуда: Москва
Дата регистрации: 11.11.2008
Кстати, я предполагал, что ты предложишь записывать "лишнее" значение напрямую, то есть как 10, глуша ошибку переполнения.
Тогда тебе не потребуется поле под Null.
Ratings: 0 negative/0 positive
Re: формат numeric
Taran

Сообщений: 13623
Откуда: Красноярск
Дата регистрации: 16.01.2008
akvvohinc
Кстати, я предполагал, что ты предложишь записывать "лишнее" значение напрямую, то есть как 10, глуша ошибку переполнения.
Тогда тебе не потребуется поле под Null.

Ну я конечно наивен и глуп, но не настолько.
Про Null забудем. Не удачный пример.
Нет оценки - значит просто нет записи.
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 27 (Гостей: 27)

© 2000-2024 Fox Club 
Яндекс.Метрика