Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как сделать, чтобы JavaScript выводил в результате целое число??? (https://javascript.ru/forum/misc/15294-kak-sdelat-chtoby-javascript-vyvodil-v-rezultate-celoe-chislo.html)

SleeP 20.02.2011 19:14

Как сделать, чтобы JavaScript выводил в результате целое число???
 
<script>
  var i =104;
  var k =3;
  var l =(0+1);
  var m =100
  var w =i+k
  var v = (w/l)/m;
  var x =v*200
  document.write(x);
 </script>


В результате выводит 3.5000000000000004. Как сделать, чтобы выводило 3???

monolithed 20.02.2011 19:52

alert(~~3.5000000000000004)

Aetae 20.02.2011 20:08

Зачем 2 операции если можно одной?)
alert(3.5000000000000004|0)

И вообще - нефиг. Новичкам надо советовать правильные методы:
alert([
Math.round(3.5), //округлить
Math.ceil(3.1), //округлить вверх
Math.floor(3.9) //округлить вниз
])

monolithed 20.02.2011 20:29

Цитата:

Сообщение от Aetae
Зачем 2 операции если можно одной?)

alert(3.5000000000000004|0) //2757ms
alert(~~3.5000000000000004) //1618ms

PS: хотя FB почему-то не всегда однозначно отдает преимущество последнему хз, а так ты по сути прав

Цитата:

Сообщение от Aetae
Новичкам надо советовать правильные методы:

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

тогда еще стоит добавить:
alert(parseInt(3.5000000000000004));

B@rmaley.e><e 20.02.2011 21:11

Цитата:

Сообщение от monolithed
к тому же в конкретном случае безобидны

Не совсем.
var t = 123745737531.41;
alert( [t, t | 0, ~~t].join('\n') )

monolithed 20.02.2011 21:25

Цитата:

Сообщение от B@rmaley.e><e
Не совсем.

ага, после 1000000000 начинается шоу ;)
больше интересно как это обойти, используя только побитовые операторы?

B@rmaley.e><e 20.02.2011 21:49

После 2147483648, если быть точным :-)

Matre 21.02.2011 10:21

Цитата:

больше интересно как это обойти, используя только побитовые операторы?
Никак.

Цитата:

точным
Занудой.


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