On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
администратор




Пост N: 7696
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.09.22 17:30. Заголовок: Как узнать сколько знаков после запятой используется ?


Имеем цифирь например
10.12300
Как понять что используется 3 знака после запятой ?
10.00010
Как понять что используется 4 знака после запятой ?
На ум приходит идея преобразовать в строку через Transform и затем
дробную часть анализировать в цикле

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 3 [только новые]


постоянный участник




Пост N: 4161
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 26.09.22 22:32. Заголовок: Dima Делаю вывод в ..


Dima
Делаю вывод в тсб и т.д. для цены, кол-ва, суммы через ф-ю
 
* ----------------------------------------------------------------------------------- *
FUNCTION NumberNoNul( xv )
* ----------------------------------------------------------------------------------- *
Local nn, cv, cc, nk

If ISNUMERIC(xv) ; xv := hb_ntos(xv)
EndIf
nk := Len(xv)
FOR nn := nk TO 1 STEP -1
cc := subs( xv, nn, 1 )
IF cc == "0" ; xv := left(xv, nn - 1) + " "
ELSE ; EXIT
ENDIF
NEXT

RETURN trim( xv )

т.е.
oCol:bDecode := {|xv| NumberNoNul( xv ) }
oCol:bEncode := {|xv| val( xv ) }
oCol:cPicture := <нужный для колонки> для правки колонки
для цены := '999999999.99999' - из настройки
для кол-ва := '999999999.999' - из настройки
для суммы := '999999999.99' - из настройки

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 333
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 27.09.22 07:11. Заголовок: может что то типа: x..


может что то типа:
x:=REMRIGHT(str(10.000100),"0")
if "."$x
? len( substr( x, at(".",x)+1))
endif

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7697
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.09.22 15:03. Заголовок: Остановился на таком..


Остановился на таком варианте
 
Func nfloat(n)
local ret:=2
local c:=transform(n,"999999999.99999")
local elem

for each elem in c

if elem:__enumindex()==13
if elem#"0"
ret:=3
endif
elseif elem:__enumindex()==14
if elem#"0"
ret:=4
endif


elseif elem:__enumindex()==15
if elem#"0"
ret:=5
endif
endif
next
return ret



Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 1
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет