全部 我是单位测试我的货币字段,我发现这个问题可以被视为一个错误。
<xforms:bind id="amount" nodeset="instance('form')/data/amount"
constraint="if(.!='') then number(.) >0 and string-length(.)<20 else ."/>
...
<fr:currency bind="amount" xxforms:maxlength="50" incremental="true">
<xforms:alert>Value should be below $ 9,999,999,999,999,999,999.99</xforms:alert>
</fr:currency>
我试图在上述情况下实现的条件是,进行最大值检查&lt; “9999999,999999999.99”这个共有19个字符。 (我曾试过约束=“if(。='')然后是真()其他数字(。)&lt; 10000000000000000”而不是长度检查,但后来看到该数字检查中的一些错误切换到此字符串长度检查)
现在这个字符串长度的问题是 如果我输入“9,999,999,999,999,999.991”,则会发生以下情况 1.执行约束检查。返回'false'为“9999999999999999.991”= 20长度 2.货币金额四舍五入。
所以我的约束检查失败了。但是,如果我单击该字段并在字段外单击,则约束检查将返回true
任何人都可以建议更好的方法或如何解决上述问题。
答案 0 :(得分:0)
有几点需要注意:
xxforms:maxlength
不适用于fr:currency
或任何其他fr:
控件
将数字作为double-precision 64-bit floating point type与其他数字进行评估。在评估数字时考虑到这一点。基本上这意味着大数字变得圆润。您可能遇到的大量评估问题不是错误,而是数学问题。