我在我正在从事的一个项目中发现了一段看起来有点可怕的代码。它应该显示两个数字之间的 +/- 增量,但它使用的是>
比较数字字符串而不是数字。
我假设代码目前按预期工作,所以我只是想了解 Ruby 在这种情况下如何比较这些字符串。
这是替换变量的示例:
if '55.59(100)' > '56.46(101)'
delta = '+'
else
delta = '-'
end
Be very比较数字的字符串表示形式时要小心按字典顺序 http://en.wikipedia.org/wiki/Lexicographical_order。 (即第一个字符到第一个字符,第二个字符到第二个......)
irb(main):001:0> '44' < '45'
=> true
irb(main):002:0> '44.123(whatever)' < '99.921(bananas)'
=> true
but
irb(main):003:0> '44.123' < '100'
=> false
irb(main):004:0> '44.123' < '9.123'
=> true
只要您知道您始终在比较等宽字符串,字典顺序就会与数字顺序相匹配。如果不这样做,就会发生不好的事情(特别是当最高有效数字发生变化时)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)