![]() |
Округление числа с двумя запятыми
привет всем. Нужно выводить числа в виде 00.000.00. Тоесть 1 - это 00.000.01, а 100 это уже 00.001.00 и так далее. Кто подскажет как быть, где искать?
Добавлено через 1 минуту можно ли решить это стандартными методами или нужно танцевать с бубном? |
Цитата:
я недавно писал нечто подобное Код AS3:
Если передать 100 и длину 5, то вернет 00100 думаю добавить сюда еще и точки, особого труда не составит |
Код AS3:
|
Кибадачи от iNilsa:
Код AS3:
|
Цитата:
PS Где кнопка "запомнить ответ"? |
Цитата:
Код AS3:
|
спасибо всем, помогли!!!!
|
Цитата:
|
Хм... ничего не понял.
|
регексп не работает, или это не регексп? :о/
|
Где не работает?
|
Издеваетесь?
сайт http://gskinner.com/RegExr/ я на нем все свои регекспы отлаживаю. Добавлено через 1 минуту А понял, ваш только для семизначного числа |
Цитата:
Немедленно начинай мне тыкать! =) Не только для семизначного, там можно как угодно поправить. Другое дело, что: 1. так в задаче было надо 2. и не забывай, что мы с iNilsом (становится поближе к iNilsу, чувствует себя крутым) добавляем на всякий случай кучу ноликов перед числом |
Мне мама запрещала тыкать. Ну раз теперь можно... (шутка про коня с баша)
А есть вариант именно для любого числа, чтобы регекспом и нули "дописывались"? |
Цитата:
|
почему не устраивает так :) ?
Код AS3:
|
Цитата:
|
Цитата:
|
Чтобы только replace без пред и пост обработки. Мне интересно, вообще возможно ли это, потому как один человек мне категорично заявил, что регекспом строку ВООБЩЕ не отформатировать. Я в них только разбираться начинаю (надоели извращения со сплитами и джоинами), так что интерес велик.
Добавлено через 5 минут А я тут еще сам притормаживаю, думал второй параметр тоже регексп, а это коды замены replace'a. Пардоньте. |
Цитата:
|
Цитата:
3 сабстринга и 4 конкатенации против одного реплейса и одной конкатенации. Добавлено через 10 минут Код AS3:
parse2 2788 Абсолютно чистая победа за №4. :о)) |
Цитата:
|
Вот Фома-то :о)). В релизе:
parse1: 6369 parse2: 1313 Безупречно чистая победа. |
Регэкспы по умолчанию тормознее, не знаю, зачем тесты ещё проводить.
|
Я много чего еще не знаю. Кто, например, задал эти умолчания, или это как-то эмпирически вычисляется?
|
Страшная тайна: RegExp написан на AS3.
|
Грусть Печаль
|
Да, поэтому предпочтение отдаётся ломовым методам, чаще всего.
|
Цитата:
Пруф в студию. |
Код AS3:
|
Цитата:
А вот тут уже нет: http://mod-actionscript.googlecode.c...-central/core/ Там уже используется сишный pcre. Это гут, но всё равно против лома нет приёма. |
Я в принципе не понимаю как регэксп может быть быстрее. Это из серии "если написать код в одну строчку, то будет же быстрее?" Как ни верти, а операции с данными все-равно надо произвести, магии и мистики ждать не приходится. В случае сабстринга мы конкретно говорим - возьми с такого-то индекса столько-то байт. Всё. А что должен сделать регэксп? На одном определении "число/не число" уже несколько дополнительных операций. На разборе сколько до и сколько после - еще пачка. Регэксп это не телепатия, а те же самые операции. Только в 10 раз больше, как всегда при "универсальности".
Добавлено через 9 минут Предназначение регэкспа - поиск и извлечение по шаблону. В этой задаче нечего искать. Сабстринг не предлагает что-то искать, он называет конкретные индексы сразу. А все остальное – конкатенация – выполняется в лучшем случае точно так же (теми же машинными операциями), а возможно и гораздо проще в случае сабстринга. То, что виден вызов одной функции, не означает скорости. Сколько операций внутри этой функции? "один реплейс" может содержать сотни. А сабстринг он и есть сабстринг)) |
В теории регексп может быть быстрее или сопоставим. substring / серия других AS3 функций могут быть выполнены как опкоды виртуальной машины (а не оптимизированы до машинных кодов), в то время как регулярное выражение может быть скомпилировано (и доведено до "совершенства") компилятором. В менее тривиальных случаях, например, в JS регулярные выражения могут быть быстрее аналогичного кода на JS просто потому, что скомпилировать JS будет дольше и менее производительно, чем выражение (кстати, в V8 регулярки вообще всех рвут, даже Перл).
|
Просветите пожалуйста, что такое V8 ?
|
Цитата:
|
Код AS3:
|
wvxvw, а что это вообще? <_<
|
Функция format(x) возвращает строку вида хх.ххх.ххх.ххх.хх где каждый х - разряд в десятичной системе счисления, что собственно, автор и хотел. :) Она кстати будет по-быстрее, чем вариант с регулярным выражением, а если задесйствовать fastmemory + немного инлайна, то может и сравнима с substring() :) При этом используется только побитовый сдвиг, прибавление, отнимание и логические операции.
|
Код AS3:
|
Коды символов точки и нуля.
|
| Часовой пояс GMT +4, время: 04:12. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.