Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Деление на JS (https://javascript.ru/forum/misc/12357-delenie-na-js.html)

alfmaster 13.10.2010 20:28

Деление на JS
 
Подскажите: можно ли разделить число с помощью javascript, чтобы получилось целое число (не дробное), т.е. после обыкновенного деления сократить все цифры после запятой?

alfmaster 13.10.2010 20:59

извиняюсь за создание лишней темы, вопрос уже решил сам (невнимательно смотрел статьи на сайта).
ответом был метод toFixed()

B@rmaley.e><e 13.10.2010 22:22

Как-то раз мы тут обсуждали округление дробных чисел в меньшую сторону. В ходе обсуждения были найдены короткие записи для округления:
alert(37 / 11 | 0)

Минусов у такого подхода 2:
1. Для непосвященного код непонятен.
2. Результат деления должен быть меньше, чем 2^31.
t = 32768 * 32768 * 32768 / 11;
alert([t, t | 0].join('\n'))

alfmaster 14.10.2010 12:43

в моем случае оба минуса неважны
1. Код вполне понятен
2. Мне необходимы числа до 2^10))

with-love-from-siberia 14.10.2010 14:41

Не думаю, что лимитированные хаки лучше стандартных средств

var x = 32768 * 32768 * 32768 / 11;
alert([x, Math.floor(x)])

B@rmaley.e><e 14.10.2010 14:48

with-love-from-siberia, побитовые операции быстрее.
http://javascript.ru/forum/dom-windo...uyu-chast.html

alfmaster 14.10.2010 14:55

в моем случае уместнее |0, т.к. скорость в опере у него высока, а использовать такой скрипт планируется и в opera mobile (ясно что math.floor тут займет в несколько раз больше времени).

with-love-from-siberia 14.10.2010 15:19

Встречные вопросы.

Будут выполняться массовые преобразования со множеством действительных чисел? Как много их, если это влияет на производительность?

Выделение целой части числа - единственное узкое место Ваших скриптов? Остальной код выполняется достаточно быстро и не влияет на производительность Вашей системы?

Мое мнение - это экономия на спичках.

alfmaster 14.10.2010 15:36

нет, я совсем не о том. я говорю про то что ограничение на число-не важно, они в любом случае будут не больше 1000.
в моем случае это не экономия, а скорее упрощение скрипта (гораздо быстрее записать сразу a/b|0, чем дополнительно писать math.floor.

Kolyaj 14.10.2010 16:36

alfmaster,
вы сами себе противоречите, то вам скорость выполнения важна, то скорость написания кода.


Часовой пояс GMT +3, время: 12:42.