Динамически изменять высоту BottomSheetBehavior

Что происходит, так это то, что виртуальная машина AS3 использует 32-битные «атомы» для хранения значений примитивных типов.

3 из этих 32 бит используются для описания типа, то есть осталось 29 бит.

Поскольку int является подписанным типом - с использованием 1 бит для знака - это оставляет 28 бит для положительного целого числа. Выполнение наивысшего числа, которое вы можете записать в оставшихся 28 бит:

0x0FFFFFFF = 268435455

Как только целочисленному нужно больше 29 бит, атом изменяется VM на тип Number (который действительно представленный как 29-битный указатель на фактический 64-битный двойной прецизионный float).

Таким образом, значение, определяемое как «максимальное значение int», на самом деле не имеет особого смысла (поскольку Number может хранить интегральные значения до 53 бит, но int ограничит это до 32) - кроме как в терминах:

  • , взаимодействующих с другими языками / технологиями (которые в основном используют 32 бита для их целые числа)
  • , делая результаты (в основном) предсказуемыми для программистов, используемых для 32-битных целых чисел; и
  • будущей проверки (в случае, если внутреннее представление изменится в будущем).

В качестве побочного элемента существует множество особенностей с ints и Numbers - в том числе что это:

var i:Number = 2.0;

... хранится как int до тех пор, пока децималы не понадобятся.

35
задан miho 1 March 2016 в 10:13
поделиться