【问题标题】:Calculating values in Lua to higher accuracy在 Lua 中计算值以提高精度
【发布时间】:2020-04-23 03:25:29
【问题描述】:

表达式print(math.pi)pi 的值作为3.1415926535898 在我的CPU 上使用lua 5.3 给出最多13 位小数。是否有可能获得更多小数位的值,例如 math.pi 的值最多 50 个小数位。如果是这样,在lua中可以计算的最高限制是多少?

【问题讨论】:

    标签: lua evaluation calculation evaluate


    【解决方案1】:

    Lua 使用双精度浮点;尾数有 52 位,因此数字限制为大约 16 位小数。

    如果您需要更高的精度,请使用多精度库,例如 lqd,它使用具有 212 个尾数位的四倍双精度并提供大约 64 个小数。然后qd.pi 给出 3.1415926535897932384626433832795028841971693993751058209749445923。

    【讨论】:

      【解决方案2】:
      print(string.format("%0.50f", math.pi))
      

      打印 3.14159265358979311599796346854418516159057617187500

      来自https://www.lua.org/source/5.3/lmathlib.c.html

      #define PI      (l_mathop(3.141592653589793238462643383279502884))
      

      我不知道为什么这两个数字不同。但是如果你想分别打印比 print 或 tonumber 更高的精度,你必须自己格式化数字。

      【讨论】:

      • 尽管%0.50f 的格式是正确的,但math.pi 中只有前52 位是正确的。
      猜你喜欢
      • 2014-11-20
      • 1970-01-01
      • 2020-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-21
      • 2015-06-06
      • 2016-10-13
      相关资源
      最近更新 更多