Целые числа в JavaScript
Я новичок в Javascript, так что простите меня, если я буду казаться глупым, потому что я изучил Javascript из W3Fools (которые действительно трудные учебники - t объяснять все, что я хочу знать, но все, что я, вероятно, могу угадать из своего опыта с С++).
Я могу переключиться на MDN, но если вы можете порекомендовать любые другие учебники, это будет здорово.
В любом случае, вот мой вопрос:
Я просто прочитал несколько строк этого и, по-видимому:
Номера в JavaScript "64-битный формат с двойной точностью IEEE 754", согласно спецификации. У этого есть несколько интересных последствия. Нет такой вещи, как целое число в JavaScript, так что у вас есть быть осторожным с вашим арифметика, если вы привыкли к математике в C или Java.
Я уже видел, что существует несколько типов данных (для переменных), с которыми я привык с С++. Но я не ожидал, что все числа будут автоматически float
s. Нет ли способа использовать int
egers, а не float
? Будет ли в будущем версия поддержки JavaScript int
s?
Ответы
Ответ 1
В Javascript действительно только несколько типов данных: объекты, числа и строки. Когда вы читаете, номера JS - это все 64-битные поплавки. Нет ints.
У Firefox 4 будет поддержка Typed Arrays, где у вас могут быть массивы реальных int и т.д. https://developer.mozilla.org/en/JavaScript_typed_arrays
До тех пор существуют хакерские способы хранения целочисленных массивов в виде строк и выщипывание всех целых чисел с помощью charCodeAt()
.
Ответ 2
Я не думаю, что он когда-либо будет поддерживать целые числа. Это не проблема, так как каждое беззнаковое 32-битное целое число может быть точно представлено как 64-битное число с плавающей запятой.
Современные движки JavaScript могут быть достаточно умны, чтобы генерировать специальный код, когда числа целые (с защитными проверками, чтобы убедиться в этом), но я не уверен.
Ответ 3
Используйте это:
function int(a) { return Math.floor(a); }
И вы можете использовать его так:
var result = int(2.1 + 8.7 + 9.3); //int(20.1)
alert(result); //alerts 20
Ответ 4
Существует нулевая поддержка целых чисел. Это должно быть простым вопросом округления переменной каждый раз, когда вам это нужно. Накладные расходы на производительность неплохие.
Ответ 5
Если вам действительно нужно использовать целые числа, просто используйте метод пола для каждого числа, с которым вы сталкиваетесь.
Кроме того, свободная типизация Javascript является одной из сильных сторон.