我正在尝试将一串科学计数法数字转换为实际数字。
我的测试字符串格式如下:
myString = 1.000000000000000E+00, 2.000000000000000E+02, -1.000000000000000E+05
我当前的代码:
elements = {}
for s in myString:gmatch('%d+%.?%d*') do
table.insert(elements, s);
end
return unpack(elements);
Elements 错误地返回以下内容:
1.000000000000000 %from the first number before "E"
00 %after the "E" in the first number
2.000000000000000 %from the second number before "E"
有人知道我该如何解决这个问题吗?
最佳答案
对我来说,“实际数字”是指数字数据类型。 tonumber()
在科学记数法方面做得很好。
local myString = [[ 1.000000000000000E+00,
2.000000000000000E+02, -1.000000000000000E+05 ]]
local function convert(csv)
local list = {}
for value in (csv .. ","):gmatch("(%S+)%W*,") do table.insert(list,tonumber(value)) end
return unpack(list)
end
print(convert(myString))
关于string - Lua - gmatch 科学记数法字符串到数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16677354/