Целые числа в JavaScript - PullRequest
       1

Целые числа в JavaScript

17 голосов
/ 16 января 2011

Я новичок в Javascript, так что простите меня, если я выгляжу глупо, потому что я выучил некоторые Javascript из W3Fools (которые действительно сложные уроки - они не объясняют ничего, что я хочу знать, но все Я, наверное, догадываюсь по своему опыту работы с C ++).

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

В любом случае, вот мой вопрос:

Я только что прочитал несколько строк этого и, по-видимому:

Числа в JavaScript 64-битный формат IEEE двойной точности 754 значения ", согласно спец. Это имеет некоторые интересные последствия. Там нет такого понятия, как целое число в JavaScript, так что у вас есть быть немного осторожнее с вашим арифметика, если вы привыкли к математике в C или Java.

Я уже видел, что есть несколько типов данных (для переменных), к которым я привык из C ++. Но я не ожидал, что все числа автоматически будут float с. Нет ли способа использовать int egers, а не float? Будет ли будущая версия JavaScript поддерживать int s?

Ответы [ 5 ]

15 голосов
/ 16 января 2011

В Javascript есть только несколько типов данных: объекты, числа и строки. Как вы читаете, все номера JS являются 64-битными числами с плавающей точкой. Там нет целых.

Firefox 4 будет иметь поддержку Typed Arrays, где вы можете иметь массивы real int и такие: https://developer.mozilla.org/en/JavaScript_typed_arrays

А до тех пор существуют хакерские способы хранения целочисленных массивов в виде строк и извлечения каждого целого числа с помощью charCodeAt().

4 голосов
/ 16 января 2011

Не думаю, что он когда-либо будет поддерживать целые числа. Это не проблема, так как каждое 32-разрядное целое число без знака может быть точно представлено как 64-разрядное число с плавающей запятой.

Современные механизмы JavaScript могут быть достаточно умными, чтобы генерировать специальный код, когда числа целые (с проверками безопасности, чтобы убедиться в этом), но я не уверен.

2 голосов
/ 16 января 2011

Используйте это:

function int(a) { return Math.floor(a); }

И вы можете использовать это так:

var result = int(2.1 + 8.7 + 9.3); //int(20.1)
alert(result);                     //alerts 20
0 голосов
/ 16 января 2011

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

Кроме этого, свободная типизация Javascript - одна из его сильных сторон.

0 голосов
/ 16 января 2011

Существует нулевая поддержка целых чисел.Нужно просто округлять переменную каждый раз, когда вам это нужно.Снижение производительности совсем не плохо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...