如何从 IUP 文本输入中获取 Lua 中的浮点数
How to get float number in Lua from IUP text entry
我正在尝试按照简单的代码从用户那里获取十进制值:
require( "iuplua" )
t1 = iup.text{expand = "YES", padding = "10x10", alignment="ARIGHT", size="40x"}
btn = iup.button {title = "Print:", padding = "10x10", alignment="ACENTER", size="40x"}
qbtn = iup.button{title="Quit", expand = "YES", padding = "10x10", alignment="ACENTER", size="40x"}
function btn:action()
strval1 = string.match (t1.value, "%d+")
print (strval1)
num = tonumber(strval1)
print (num)
end
function qbtn:action()
os.exit()
end
dlg = iup.dialog {
iup.vbox{
iup.hbox{
iup.label{title="Decimal:", padding = "10x10", alignment="ALEFT", size="40x"},
t1 },
iup.hbox{
btn,
qbtn }}}
dlg:show()
iup.MainLoop()
但是,它只打印出一个整数(小数点前的部分 - 即使是 25.9999 也打印为 25)。
如何获取用户输入的浮点数或小数值?谢谢你的帮助。
代码的问题在于 btn:action
中的模式 "%d+"
仅获取前 运行 个数字。
您可以更改模式来处理小数点,但很难编写适用于所有情况的模式,包括可选的符号和小数点以及科学格式。
最好让 tonumber
完成它的工作:如果字符串无法转换为数字,它将 return nil
。
另一种选择是使用 IupText 的 MASK 属性让用户只能输入数字。
我正在尝试按照简单的代码从用户那里获取十进制值:
require( "iuplua" )
t1 = iup.text{expand = "YES", padding = "10x10", alignment="ARIGHT", size="40x"}
btn = iup.button {title = "Print:", padding = "10x10", alignment="ACENTER", size="40x"}
qbtn = iup.button{title="Quit", expand = "YES", padding = "10x10", alignment="ACENTER", size="40x"}
function btn:action()
strval1 = string.match (t1.value, "%d+")
print (strval1)
num = tonumber(strval1)
print (num)
end
function qbtn:action()
os.exit()
end
dlg = iup.dialog {
iup.vbox{
iup.hbox{
iup.label{title="Decimal:", padding = "10x10", alignment="ALEFT", size="40x"},
t1 },
iup.hbox{
btn,
qbtn }}}
dlg:show()
iup.MainLoop()
但是,它只打印出一个整数(小数点前的部分 - 即使是 25.9999 也打印为 25)。
如何获取用户输入的浮点数或小数值?谢谢你的帮助。
代码的问题在于 btn:action
中的模式 "%d+"
仅获取前 运行 个数字。
您可以更改模式来处理小数点,但很难编写适用于所有情况的模式,包括可选的符号和小数点以及科学格式。
最好让 tonumber
完成它的工作:如果字符串无法转换为数字,它将 return nil
。
另一种选择是使用 IupText 的 MASK 属性让用户只能输入数字。