我目前正在用TypeScript实现MessagePack编码器,我需要以尽可能小的MessagePack格式编码数字。使用Number.isSafeInteger()
函数可以使整数变得轻而易举,但是我不确定我是否非常了解浮点/双精度表示法。
我用其他语言查找了一种方法,以确定是否可以将双精度数转换为浮点数而不会损失任何值/精度,但是它们都涉及强制转换为浮点数,然后返回并检查值是否仍然相等。显然,我无法在JavaScript中这么轻松地做到这一点。
是否有一种明智的方法来签入JavaScript? 将值写入Float32Array
,然后作为临时强制转换将其读回,然后将其与原始值进行比较吗?如果是这样,那是最好/最快的解决方案吗?