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,
вы сами себе противоречите, то вам скорость выполнения важна, то скорость написания кода.

alfmaster 14.10.2010 17:09

отвечу только то что из всех предложенных вариантов мне понравился первый, я на нем и остановился.

dallleck 01.05.2016 19:01

var x=101;
var y=3;
var rez = (x - (x % y) ) / 3;
а что мешает сделать следующее? вычесть остаток от деления из делимого и тогда мы точно получим при новом делении целое число

aklis 01.05.2016 22:21

Как уже говорилось ранее - ничто не мешает использовать Math (про производительность из пальца высосано). Он понятен всем с полувзгляда.

Делайте вещи проще и понятнее - встречаю этот совет практически во всех учебных материалах. И сам считаю что совет дельный.


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