Lua 有效数字

我正在尝试编写一个函数,用于将数字四舍五入至用户提供的一定数量有效数字,例如如果用户给出数字

234.235534 要求保留5个有效数字,函数应该返回 234.24

点赞
用户1190388
用户1190388

我认为你正在寻找 [fs]?printf%g 修饰符。

根据值和精度将浮点数转换为十进制或十进制指数表示法。

其中,精度 由以下规定:

. 加上整数或 *,或者没有任何内容,指定转换的精度。如果使用了 *,那么精度由 int 类型的额外参数指定。如果该参数的值为负数,则会被忽略。如果没有使用数字或 *,则将精度视为零。

所以,你想要:

> return ("%.5g"):format(234.235534)
234.24
> return  ("%.6g"):format(x)
234.236
2016-09-01 07:47:19
用户9942434
用户9942434
我不是一名程序员,但是在看到其他人在 lua 中推荐的四舍五入函数让我失望后,为了自己的使用我想了一个方法。这个函数应该可以满足你的需求。

function sigFig(num,figures) local x=figures - math.ceil(math.log10(math.abs(num))) return(math.floor(num*10^x+0.5)/10^x) end

```

现在从有效数字方面来看,它不会添加额外的零来表示精度。例如:

sigFig(234.235534,5) 将得到 234.24

sigFig(234.0000001,6) 将得到 234.0,而不是 234.000

2018-06-14 15:10:22