Страницы: 1
Здравствуйте.
Помогите с проблемкой, если у таковой есть решение.
JavaScript практически не знаю.
Суть: есть число (количество байт файла), например, 9036443008.
Необходимо вывести его в формате 8'617.8. То есть 9036443008/1024/1024.
Сейчас делаю так:
<td class="size"><script type="text/javascript">b = 9036443008/1048576.0; a += b; b = b.toFixed(1); document.write(eval(b));</script></td>
Проблема (точнее две) в том, как выводить разделитель (апостроф) между тройками чисел и как выводить всегда одно значение после запятой, даже если там 0 (сейчас он не выводится).
Отсутствует
var b = 9036443008000 / 1048576.0; b = b. toFixed (1); var dl = "'"; // разделитель разрядов var c = b. match (/(\d{0,2})((\d{3})*)(\.\d)$/); var d = new Array (c [1], c [2]. match (/(\d{3})/g). join (dl)); var e = d. join (dl) + c [4]; document. write (e);
Подойдет ?
Наверняка можно и покороче, но не знаю как.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
А. Стоп. Тут только с дробной частью. Нужно бы что-то вроде
Отсутствует
Спасибо большое за помощь.
Отсутствует
Только вот нюанс
Если число например такое 643.2 , то выводится как '643.2
Можно поправить?
Отсутствует
princeandrew
Добавь перед последним объединением
Отсутствует
Супер.
Ещё раз большое спасибо.
Отсутствует
как вам такой вариант
b=a.toFixed(1).split('.'); a=b[0].split('').reverse().join('').replace(/(\d{3}\B)/g,"\$1'").split('').reverse().join('')+'.'+b[1];
собственно в 'a' у нас число которое надо красиво нарисовать а 'b' это просто временная переменная
Отредактировано Rion (29-11-2005 16:06:07)
Gentoo Linux
Отсутствует
всё было бы ГОРАЗДО проще если бы удалось както replace рассматривать строку с конца а не с начала.
PS извиняюсь за 2 сообщения вместо 1. похоже прокся не пропускает пост запросы с переменными больше 512 байт
Gentoo Linux
Отсутствует
Rion
всё было бы ГОРАЗДО проще если бы удалось както replace рассматривать строку с конца а не с начала.
Хе, так можно, рассматривая строку как массив, поменять местами ее элементы (reverse), провести замену и поменять обратно
Хотя овчинка выделки не стоит, имхо.
Отсутствует
Хе, так можно, рассматривая строку как массив, поменять местами ее элементы (reverse), провести замену и поменять обратно
что я и сделал выше
просто интересно было поэксперементировать как можно сократить код
Gentoo Linux
Отсутствует
Обходимся без split - reverse - join:
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Если уж через позиционную проверку, то надо как-то так
Отсутствует
Если уж через позиционную проверку, то надо как-то так
Al_H, а зачем ?
Вот так:
ведь короче.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
в итоге можно написать ф-ию
function numFormat(a) { return a.toFixed(1).replace(/(\d{1,3}(?=(\d{3})+\.\d))/g,"\$1'"); }
ЗЫ плохо меня в детстве регуляным выражениям учили.. мог бы и сам до такого догадатсья
Gentoo Linux
Отсутствует
Давно сюда не заглядывал
Нифига себе
Ещё суперее сделали
Отсутствует
Страницы: 1