Страница 1 из 1
Perl людям
Добавлено: 20 фев 2003, 09:41
Tundra
Пиплы, делитесь короткими путями форматирования number в currency.
пример: 32556334 в 32,556,334.00
sprintf() вроде не катит (запятые не расставляет).
Да, модули не предлагать.
regexp?
Добавлено: 20 фев 2003, 10:29
не местный
1111
Добавлено: 20 фев 2003, 22:17
Boo
не супер-пупер коротко, но вроде работает:
Код: Выделить всё
sub make_currency_string {
local $_ = shift ;
unshift( @v, $2 )
while( s/^(.*)(\d{3})$/$1/ ) ;
$_ && unshift( @v, $_ ) ;
join( ',', @v ) . ".00" ;
}
кто-нить знает как короче, типа в одну строку?
мои три копейки
Добавлено: 21 фев 2003, 11:57
Смайл
А вот и мой вариант (детерменистский

)
JavaScript
Код: Выделить всё
function currency(number,dollars)
{
if(dollars) {
if(!(number = Math.floor(number))) return "";
var L = currency(number / 1000,true);
return (L?(L + ","):"") + (number % 1000).toString();
}
else {
var c = (Math.round(number * 100) % 100).toString();
return currency(number,true) + "." + ((c.length != 1)?c:(c + "0"));
}
}
тестовая страница:
http://terra-informatica.org/test/currency.htm
[/code]
Re: мои три копейки
Добавлено: 21 фев 2003, 12:02
Tundra
Смайл писал(а):А вот и мой вариант (детерменистский

)
JavaScript
Код: Выделить всё
function currency(number,dollars)
{
if(dollars) {
if(!(number = Math.floor(number))) return "";
var L = currency(number / 1000,true);
return (L?(L + ","):"") + (number % 1000).toString();
}
else {
var c = (Math.round(number * 100) % 100).toString();
return currency(number,true) + "." + ((c.length != 1)?c:(c + "0"));
}
}
тестовая страница:
http://terra-informatica.org/test/currency.htm
[/code]
С Java/Javascript я думаю нет таких проблем. Дело в том , что у Perl нет даже приблизительных build-in функций - вот и приходится изощрятся.