javascript浮动/到位

Ste*_*ios 22 javascript types

我试图在任何其他语言中执行一些简单易懂的东西,但不是javascript:从浮动中获取位数(反之亦然).

在C/C++中它会是这样的

float a = 3.1415;
int b = *((int*)&a);

反之亦然

int a = 1000;
float b = *((float*)&a);

在C#中,您可以使用BitConverter ... floatBits或类似的东西......即使在VB6中为了基督的缘故,您也可以将float32存入int32.我怎么能在javascript中转换和int和浮点数?

小智 20

function DoubleToIEEE(f)
{
    var buf = new ArrayBuffer(8);
    (new Float64Array(buf))[0] = f;
    return [ (new Uint32Array(buf))[0] ,(new Uint32Array(buf))[1] ];
}
Run Code Online (Sandbox Code Playgroud)

  • 另一个方向(从字节到浮点数),请参见:http://stackoverflow.com/a/21282715/1691517。 (3认同)

bob*_*nce 11

你当然不会像JavaScript那样得到任何低级别的东西.允许重新编写和指针擦除语言必须对不受信任的潜在攻击者网站使用安全是非常危险的.

如果你想在一个数字中获得一个32位IEEE754表示单精度值的表示(记住它也不是一个int;你在JavaScript中得到的唯一数字类型是double),你必须通过摆弄它来自己制作它.符号,指数和尾数位在一起.有示例代码在这里.

  • 我不明白为什么在JavaScript编号中添加本机IEEE二进制格式转换会是一个安全问题.这件事没有任何重铸或指针. (7认同)
  • +1用于重新引入我的单词frobbing. (5认同)
  • 这个链接似乎被打破了.也许你想将示例代码添加到答案中?(来自[帮助中心>回答>我如何写出一个好的答案?](https://stackoverflow.com/help/how-to-answer):"总是引用重要链接中最相关的部分,以防万一目标站点无法访问或永久脱机.") (3认同)