在Python中执行Javascript浮点运算
我正在编写一个Python程序,它与我没有编写的webapp交互。我需要在程序中表示一些状态,这些状态不是由服务器发送到(javascript)客户端的,而是在客户端和服务器上使用共享信息分别计算的 例如,交换可能类似于:在Python中执行Javascript浮点运算,javascript,python,floating-point,Javascript,Python,Floating Point,我正在编写一个Python程序,它与我没有编写的webapp交互。我需要在程序中表示一些状态,这些状态不是由服务器发送到(javascript)客户端的,而是在客户端和服务器上使用共享信息分别计算的 例如,交换可能类似于: var x = getValueFromServer(); //client gets 0.73346 x *= 1 << 30; result = x & 1023 但在Python中,这个值为696,而在node中运行上述javascript时,得到
var x = getValueFromServer(); //client gets 0.73346
x *= 1 << 30;
result = x & 1023
但在Python中,这个值为696,而在node中运行上述javascript时,得到的值为566。我还尝试了其他几种打包和解包格式的组合,但没有成功
我最后的办法是在Python内部使用节点子进程执行javascript,但我更愿意避免这种情况。如何解决此问题?x=0.73346
x = 0.73346
x = x * (1 << 30)
x = int(x) & 1023
x=x*(1)python是如何接收要使用的数据的?一个websocket。不过,这在这里并不特别相关。从技术上讲,它不是直接接收浮点,而是接收一些整数并计算浮点,因此对正在使用的浮点进行解码没有问题。我不确定您想用struct
实现什么:这将是rei将浮点的位模式解释为整数,而不是进行类似算术运算的操作。执行类似于int(0.73346*(1)对,因此您提供的表达式在python中不起作用,因为没有为浮点定义位操作。解包操作是为了保持位顺序不变并允许该操作。您尝试过吗?它在命令行中对我有效(在python 2和python 3中)啊,看来JavaScript让你在浮点上使用位操作的方法是把它们转换成int型……我甚至没有考虑过。谢谢!
x = 0.73346
x = x * (1 << 30)
x = int(x) & 1023