当前位置:  开发笔记 > 编程语言 > 正文

可以使用双精度来表示64位数而不会损失精度

如何解决《可以使用双精度来表示64位数而不会损失精度》经验,为你挑选了2个好方法。

我想使用lua(内部仅使用双精度)来表示一个整数,该整数不能在0到2 ^ 64-1之间出现舍入误差,否则会发生可怕的事情.

有可能这样做吗?



1> stusmith..:

没有

必须使用64位双精度的至少一些位来表示指数(二进制点的位置),因此实际数量可用的位数少于64位.所以不,64位双精度不能代表64位整数的所有值(反之亦然).


即使是不切实际的解决方案也可能不起作用 - 例如,如果在Lua中处理,则信号NaN(SNaN)值可能会触发异常(不知道这是否属实 - 但它可能).

2> 小智..:

即使你对64位类型的问题得到了一些很好的答案,你仍然可能需要一个实际的解决方案来解决你的具体问题.我所知道的最可靠的解决方案是使用LNUM补丁(也称为Lua整数补丁)构建Lua 5.1,可以从LuaForge下载.如果您不打算从C源构建Lua,那么至少有一个纯Lua库可以处理64位有符号整数 - 请参阅Lua-users wiki.

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有