相关疑难解决方法(0)

javascript浮动/到位

我试图在任何其他语言中执行一些简单易懂的东西,但不是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和浮点数?

javascript types

22
推荐指数
2
解决办法
7288
查看次数

通过计算得不到0.30000000000000004

当我在控制台中运行时,0.1 + 0.2结果是0.30000000000000004.所以我试着自己计算一下.以下是我采取的步骤.

1)表示0.1为IEEE754双:

0.1 = 0 01111111011 1001100110011001100110011001100110011001100110011010
Run Code Online (Sandbox Code Playgroud)

2)表示0.2为IEEE754双:

0.2 = 0 01111111100 1001100110011001100110011001100110011001100110011010
Run Code Online (Sandbox Code Playgroud)

这里的计算应该是正确的,因为我已经使用我的自定义函数检查了它们,该函数显示了JavaScript如何存储数字.

3)将两个数字转换为科学记数法:

0.1 = 1.1001100110011001100110011001100110011001100110011010x 2-4

0.2 = 1.1001100110011001100110011001100110011001100110011010x 2-3

现在由于指数数字不同,让我们调整0.2-4:

0.2 = 0.11001100110011001100110011001100110011001100110011010x 2-4

4)添加它们:

  1.1001100110011001100110011001100110011001100110011010
+ 0.1100110011001100110011001100110011001100110011001101
  ------------------------------------------------------
 10.0110011001100110011001100110011001100110011001100111
Run Code Online (Sandbox Code Playgroud)

所以总和是:

10.0110011001100110011001100110011001100110011001100111x 2-4

5)将其标准化:

1.00110011001100110011001100110011001100110011001100111x 2-3

6)在小数点后将其四舍五入:

1.1100110011001100110011001100110011001100110011010000x 2-3

删除指数后,我最终得到以下结果数:

0.001110011001100110011001100110011001100110011001101 
Run Code Online (Sandbox Code Playgroud)

当我使用此计算器将其转换为十进制时,它显示:

0.225000000000000088817841970012523233890533447265625
Run Code Online (Sandbox Code Playgroud)

不完全是预期的 …

javascript binary ieee-754

14
推荐指数
1
解决办法
247
查看次数

如何获取javascript 64bit浮点数的实际字节数

我一直在尝试研究如何在JavaScript中使用类型数组,但是我还没有点击.我不明白如何正确地读/写"视图".

var a = 23453.342;
Run Code Online (Sandbox Code Playgroud)

现在让我们说我想将它存储在一个Float64Array类型的数组中

view[0] = ??? //how do I copy the bytes that represent variable a into here.
Run Code Online (Sandbox Code Playgroud)

另外,假设我想将内部JavaScript中的整数123456存储为64位浮点数:

var i = 123456;
Run Code Online (Sandbox Code Playgroud)

但我想把它存储好像它真的是一个4字节的整数.

var buff = new ArrayBuffer(4);
var view = new UInt32Array(buff);

view[0] = ???; //how do i determine and write the 4 bytes that would represent the value of i.
Run Code Online (Sandbox Code Playgroud)

然后在这两种情况下,一旦我能够写入数据,我如何在JavaScript中将其读回到局部变量中.

javascript arrays node.js typed-arrays

3
推荐指数
1
解决办法
333
查看次数

标签 统计

javascript ×3

arrays ×1

binary ×1

ieee-754 ×1

node.js ×1

typed-arrays ×1

types ×1