| Новости | 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}]