在 Ruby 中使用 >(大于号)比较两个字符串?

2024-04-23

我在我正在从事的一个项目中发现了一段看起来有点可怕的代码。它应该显示两个数字之间的 +/- 增量,但它使用的是>比较数字字符串而不是数字。

我假设代码目前按预期工作,所以我只是想了解 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(使用前将#替换为@)

在 Ruby 中使用 >(大于号)比较两个字符串? 的相关文章

随机推荐