如何从IUP文本条目中获取Lua中的浮点数

时间:2017-10-25 10:20:48

标签: lua iup

我正在尝试使用简单代码从用户获取十进制值:

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)。

如何获取用户输入的浮点数或小数值?谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

代码的问题在于"%d+"中的模式btn:action仅获得第一次数字运行。

您可以更改模式以处理小数点,但很难编写适用于所有情况的模式,包括可选的符号和小数点以及科学格式。

最好让tonumber完成其工作:如果字符串无法转换为数字,它将返回nil

答案 1 :(得分:1)

另一个选择是使用IupText的MASK属性让用户只能输入数字。

相关问题