Форум » Для флейма » Как узнать сколько знаков после запятой используется ? » Ответить

Как узнать сколько знаков после запятой используется ?

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

Ответов - 3

SergKis: Dima Делаю вывод в тсб и т.д. для цены, кол-ва, суммы через ф-ю [pre2] * ----------------------------------------------------------------------------------- * 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 ) [/pre2] т.е. oCol:bDecode := {|xv| NumberNoNul( xv ) } oCol:bEncode := {|xv| val( xv ) } oCol:cPicture := <нужный для колонки> для правки колонки для цены := '999999999.99999' - из настройки для кол-ва := '999999999.999' - из настройки для суммы := '999999999.99' - из настройки

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

Dima: Остановился на таком варианте [pre2] 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 [/pre2]




полная версия страницы