@historydev
Редактирую файлы с непонятными расширениями

Почему разные 64 битные числа считаются одинаковыми?

Изучаю типы данных в Rust, сгенерировал максимально допустимое число для usize (64 в моём случае, что на песке, что у меня) в браузере на js: (2**64)-1 = 18446744073709552000

На песке в расте запросил максимальное значение:
https://doc.rust-lang.org/std/usize/constant.MAX.html

18446744073709551615 /* Rust MAX value */ === 18446744073709552000 /* JS result value */ // true


И они одинаковыми считаются, я знаю что js плохо работает с очень маленькими и большими числами, но это бред)

При этом компилятор rust всё понимает:
= note: the literal `18446744073709552000` does not fit into the type `usize` whose range is `0..=18446744073709551615`
  = note: `#[deny(overflowing_literals)]` on by default
  • Вопрос задан
  • 192 просмотра
Решения вопроса 2
vabka
@vabka Куратор тега Rust
в браузере на js: (2**64)-1 = 18446744073709552000

В js используется IEEE754, а там 2^64-1 нельзя точно выразить.
В js есть константа Number.MAX_SAFE_INTEGER, которая показывает больше какого числа лучше не ждать точности.
Это 9007199254740991
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы