前言
在 Lua 中,保留小数点可以使用的数据类型有:number 和 string。
如果想要将一个 number 保留到指定的小数位,可以使用 Lua 的内置函数 string.format()
,格式为 "%.nf
",其中 n
为指定保留的小数位数,最后保留位数会进行四舍五入
。
示例代码如下:
local num = 10.01476319
print(string.format("%.2f", num)) -- 保留 2 位小数,结果为 10.01
print(string.format("%.3f", num)) -- 保留 3 位小数,结果为 10.015
如果想要将一个 string 类型的数字保留到指定的小数位,可以使用 tonumber()
函数将其转换为 number 类型,再使用 string.format()
函数进行格式化输出。
示例代码如下:
local str = "10.01476319"
local num = tonumber(str)
print(string.format("%.2f", num)) -- 保留 2 位小数,结果为 10.01
print(string.format("%.3f", num)) -- 保留 3 位小数,结果为 10.015
需要注意的是,Lua 的 number 类型是双精度浮点数,因此在进行数值计算时可能会出现精度丢失的问题,所以在进行精确计算时,建议使用第三方库,如 LuaDecimal
。
示例代码如下:
local decimal = require "decimal"
local num1 = decimal.new("123.456789")
local num2 = decimal.new("456.789123")
print(num1 + num2) -- 加法运算,结果为 580.245912
print(num1 * num2) -- 乘法运算,结果为 56236.721076897