Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Misha v.3 24.08.2002 17:30
Попробуй это (написано недавно, после всестороннего тестирования добавлю в lib.p)@goodNumber[number_in;divider_in;decimal_divider_in][numberSign;numberParts;numberLeftPart;right_part;numberOut;leftn] $numberParts[^number_in.lsplit[.]] $numberSign(^math:sign($numberParts.piece)) $numberLeftPart[^eval(^math:abs($numberParts.piece))[%d]] ^if(^numberParts.count[] > 1){ ^numberParts.offset(1) $right_part[$numberParts.piece] } ^if(^numberLeftPart.length[] > 4){ $left_length_mod(^numberLeftPart.length[] % 3) ^if($left_length_mod){ $leftn[^numberLeftPart.match[(\d{$left_length_mod})(\d*)]] $numberOut[$leftn.1] $numberLeftPart[$leftn.2] }{ $numberOut[] } $num(0) $numberOut[${numberOut}^numberLeftPart.match[(\d{3})][g]{^if($num || def $numberOut){^if(def $divider_in){$divider_in}{ ^;}}^num.inc(1)$match.1}] }{ $numberOut[$numberLeftPart] } $result[^if($numberSign < 0){-}${numberOut}^if(^numberParts.count[] > 1){^if(def $decimal_divider_in){$decimal_divider_in}{,}$right_part}]