在Python中执行Javascript浮点运算

时间:2017-05-20 09:57:26

标签: javascript python floating-point

我正在编写一个与我没写过的webapp交互的Python程序。我需要在我的程序中表示一些状态,该状态不是由服务器发送到(javascript)客户端,而是在客户端和服务器上分别使用共享信息计算。

例如,交换可能类似于:

var x = getValueFromServer(); //client gets 0.73346
x *= 1 << 30;
result = x & 1023

我的Python代码成功收到0.73346,但我需要result的值。乘以2 ^ 30的结果在javascript和Python中似乎是相同的,但我无法直接掩盖Python中的浮点值。

我已经尝试过(对于上面的示例值)

from struct import pack, unpack
unpack('q', pack('d', 0.73346))[0] & 1023

但是这在Python中给出了696的值,而当我在节点中运行上面的javascript时,得到的值为566.我还尝试了一些打包和解包格式的其他组合,但没有成功。

我的最后一招是使用节点子流程从Python内部执行javascript,但我更愿意避免这种情况。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

x = 0.73346
x = x * (1 << 30)
x = int(x) & 1023

在python中给出了566