【发布时间】:2011-07-20 06:40:06
【问题描述】:
我需要在 JavaScript 中执行以下操作,但目前无法找到无缝执行此操作的解决方案:
- 按特定顺序获取两个整数,然后像 Python 的 struct 模块一样打包它们。
-
这个打包的值(支持与主机不同的字节序)将被转换为 64 位浮点数(双精度)。它们必须是任意的,因此我可能会得到整数的指数表示(例如,它们可能是 0xdeadbeef 和 500):
以 exp 形式: 1.0883076389305e-311 1.0883076389305000 * 10 ^ - 311
-
我需要将其转换为任意精度、非指数形式,所以:
0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000108830763893050000000000000000000000000000000000000000000000000000000000000000000000000000
那个数字转换成一个字符串:)
我还没有找到在 Javascript 中执行此操作的方法,我必须输出一些必须支持任意精度的数字,或者至少可以扩展到双精度数的 1024 指数(或者说 400) .
谢谢!!
注意:我确实需要“打包/解包”来忠实地表示这两个数字转换为双精度/64 位浮点数。但我不关心,比如说,导出到字符串或原始缓冲区。作为只要我得到一个任意精度的双精度表示就可以了。
【问题讨论】:
-
哈哈,我会调用在服务器上执行此操作的 Web 服务。介意我问你为什么需要在 javascript 中这样做?
-
因为这在技术上是一个挑战,而且如今由于 JIT,Javascript 比做整个服务器端处理要快得多。没有借口给服务器增加更多负担。
-
@soze - 在服务器上,打包两个 int 并将它们解压成一个 double 是微不足道的。
-
在javascript上也是如此,我认为它会更复杂。对于这样一个简单的过程,所有计算和电信超载并不是微不足道的。这一切加起来远远超过它的价值(在客户端做)。
标签: javascript binary-data integer arbitrary-precision