string - Lua - gmatch 科学记数法字符串到数字

标签 string lua scientific-notation

我正在尝试将一串科学计数法数字转换为实际数字。

我的测试字符串格式如下:

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/

相关文章:

macos - 在 macOS 上安装/编译 lua 时遇到问题

r - 强制 R 输出为最多两位小数的科学记数法

java - 在 Java 中分解字符串

c++ - 使用 Luajit 时,使用 FFI 还是使用普通的 lua 绑定(bind)更好?

c - 如何在数组中使用 C 字符串?

c++ - 如何将 C++ union 暴露给 Lua

java - 什么是科学记数法以及为什么在 Java 中科学记数法要重复打印?

Javascript parseFloat '1.23e-7' 在需要 0.000000123 时给出 1.23e-7

c# - 如何在 if 语句中使用 != 和字符串数组?

java - 特定语言的字符串类