FoxPro Club Главная

Конференция Решения Фотоальбом Сайт М.Дроздова Статьи Файловый архив Книга Visual FoxPro 9.0 Русский Help для Visual FoxPro
Пользователей: 9146
Вход
Количество цифр после запятой у переменной памяти

Способ определения количества цифр (включая завершающие нули) после запятой у переменной памяти


 
Прислал: ВладимирМ   Категория: Разное


?????????? ???? ????? ??????? ? ?????????? ??????

??? ????? ??????? ???? ??????? AFIELDS(), ??????? ? 4 ??????? ?????????? ?????????? ???? ????? ??????? ??? ?????????? ????. ??? ?????????? ?????? ????? ??????? ???. ?????? ????? ??????? ?????????? ?????? ? ??????? ? ??? ????? ??????????????? ?????? ????????.

a=123.456789000

create cursor CurTmp (kodID I)
create cursor m.a from CurTmp into cursor CurA nofilter
select CurA
=AFIELDS(b)

lnAmountDecimal=b[1,4] && ??? ??? ? ???? ?????????? ?????? ????? ???????

????????, ??? ? ?????? ?????? ? ?????????? ?????? ?????? ??????????? ????.
? ?????? ?????? ??????? ????? 9

???????????:

??????? ???????, ??? FoxPro ???????? ?????? ? 18 ????????? ???????. ?????????????, ??? ?????????? ???????? ???? ????? ??????? ?????? 18 ?? ??? ????? ???????? ? ?????????? 18. ?????????? ???? ? ????? ????? ? ?????? ?????? ???????? ?? ?????.

?????????????, ??? ????????????? ???????? ???????, ???????? 1?-15, ?????????? ????????? ????? ????? ?? ??? ?????????? ???????? ???? ????? ??????? ?? ????? 18
 
Сделайте оценку этого решения Плохо Удовлетворительно Так себе Хорошо Отлично Текущая оценка: (4.962)
Дополнения пользователей
Количество цифр после запятой у переменной памяти
[+][?]
Dmas
24.01.02 09:11:40

Здравствуйте ВладимирМ!
Захотел поделиться способом который сам пользую. Чесно говоря не знаю для всех ли версий VFP, но
для 6,7 вроде катит.


a=123.456789000
?m.a
123.456789000
?TRANSFORM(m.a)
123.456789000
* кол. знаков пос. запятой
?LEN(SUBSTR(TRANSFORM(m.a),AT(',',TRANSFORM(m.a))+1))
9
* кол. знаков пос. запятой для VFP7
?LEN(GETWORDNUM(TRANSFORM(m.a),2,','))
9

Владимир Максимов
24.01.02 11:07:59

Функция TransForm() обрезает концевые нули. Во всяком случае это происходит у меня VFP6SP5.

Однако мне подсказали другой способ перевода.
a=123.456789000

b=ALLTRIM(PADC(m.a,30))
*Количество знаков после запятой
?Len(m.b)-AT(SET('Point'),m.b)
Чернов Андрей
30.01.02 01:33:13

Только надо учесть случай, когда число целое.
[Дополнить]



© 2000-2017 Fox Club 
При размещении любых материалов с сайта на других ресурсах- прямая ссылка на www.foxclub.ru обязательна
Яндекс.Метрика