Я пытаюсь выполнить что-то, что до полусмерти просто на любом другом языке, но не JavaScript: вытащите биты из плавания (и наоборот).
В C/C++ это было бы что-то как
float a = 3.1415; int b = *((int*)&a);
и наоборот
int a = 1000; float b = *((float*)&a);
В C# можно использовать BitConverter... floatBits или что-то одинаково в Java... Даже в VB6, ради бога, Вы можете memcpy float32 в int32. Как же я могу перевести между и интервал и плавание в JavaScript?
В JavaScript уж точно нет ничего низкоуровневого. Было бы крайне опасно разрешать переработку и подбрасывание указателей на языке, который должен быть безопасен для использования ненадежными потенциальными злоумышленниками.
Если вы хотите получить 32-битное представление IEEE754 с одинарной точностью в числовом выражении (которое запоминается не как int; единственный тип числа, который вы получаете в JavaScript - double
), вам придется сделать это самому, скрещивая биты знака, экспоненты и мантиссы вместе. Здесь есть пример кода .
Как и в других плакатах, JavaScript не набирается, поэтому нет разницы в типах данных от float до int или наоборот.
Однако, то, что вы ищете, это
float to int:
Math.floor( 3.9 ); // result: 3 (truncate everything past .) or
Math.round( 3.9 ); // result: 4 (round to nearest whole number)
в зависимости от того, что вам нужно. В языке Си/Си++ это, по сути, было бы использование Math.floor
для преобразования в целое число из float.
int to float:
var a = 10;
a.toFixed( 3 ); // result: 10.000