String 对字符串值执行算术运算

String 对字符串值执行算术运算,string,types,lua,int,String,Types,Lua,Int,我想问一些关于Lua中的数据类型的问题。 我从串行链接得到一些消息命令:值如下: tmp_string = "BRAKE:1" 然后我在两个不同的函数中将这个字符串解析为command和value,一个用于command,另一个用于value。这是用于解析值的函数 function parser(value) index = string.find(value, ":") result = value.sub(value, index+1) return result

我想问一些关于Lua中的数据类型的问题。 我从串行链接得到一些消息命令:值如下:

tmp_string = "BRAKE:1"
然后我在两个不同的函数中将这个字符串解析为command和value,一个用于command,另一个用于value。这是用于解析值的函数

function parser(value)
    index = string.find(value, ":")
    result = value.sub(value, index+1)
    return result
end
我现在想知道结果是什么样的数据类型?如果我使用字符串匹配它的工作

...if string.match(state, "1") then...
然而,当我做这样的事情时,它也会起作用

x = (state*65536)/3.2808)
我以为结果是字符串,但我不明白为什么它也适用于数值运算。先谢谢你

Lua 5.3参考手册,§3.4.1- 除了求幂和浮点除法之外,算术运算符的工作方式如下:如果两个操作数都是整数,则对整数执行运算,结果是整数。否则,如果两个操作数都是可以转换为数字的数字或字符串,请参见§3.4.3,然后将它们转换为浮点数,按照浮点运算的常规规则(通常为IEEE 754标准)执行运算,结果为浮点数

重点是我的

在处理操作时,Lua将尝试将字符串操作数转换为浮点数,如果有效,则有效。如果失败,您将得到一个错误

>| '55' / 2
<| 27.5

>| 'foo' / 2
<| error: [string "return 'foo' / 2"]:1: attempt to perform arithmetic on a string value
如果你想明确这一点和安全使用,并处理零的情况

如果您需要知道Lua中值的类型,可以将变量传递给并检查结果字符串。

Lua 5.3参考手册,§3.4.1- 除了求幂和浮点除法之外,算术运算符的工作方式如下:如果两个操作数都是整数,则对整数执行运算,结果是整数。否则,如果两个操作数都是可以转换为数字的数字或字符串,请参见§3.4.3,然后将它们转换为浮点数,按照浮点运算的常规规则(通常为IEEE 754标准)执行运算,结果为浮点数

重点是我的

在处理操作时,Lua将尝试将字符串操作数转换为浮点数,如果有效,则有效。如果失败,您将得到一个错误

>| '55' / 2
<| 27.5

>| 'foo' / 2
<| error: [string "return 'foo' / 2"]:1: attempt to perform arithmetic on a string value
如果你想明确这一点和安全使用,并处理零的情况


如果您需要知道Lua中值的类型,可以将变量传递给并检查结果字符串。

如果您告诉Lua将字符串视为数字,并且它可以,它会将其转换为数字。string.matchstate,1表示转换为字符串后的数字是否有符号“1”?如果您告诉Lua将字符串视为数字,它可以,它将转换为。string.matchstate,1表示转换为字符串后的数字是否在其中某处有符号“1”?