【发布时间】:2014-07-07 21:16:13
【问题描述】:
我正在使用 Ruby 处理一个数组,该数组包含一系列人类可读格式的数字(例如,2.5B、1.27M、600,000,其中“B”代表十亿,“M”代表百万)。我正在尝试将数组的所有元素转换为相同的格式。
这是我写的代码:
array.each do |elem|
if elem.include? 'B'
elem.slice! "B"
elem = elem.to_f
elem = (elem * 1000000000)
else if elem.include? 'M'
elem.slice! "M"
elem = elem.to_f
elem = (elem * 1000000)
end
end
但是,当我使用 puts(array) 检查数组的元素时,数字显示为“B”和“M”被切掉,但似乎没有应用乘法转换(例如,现在读取的数字2.5、1.27、600,000,而不是 2500000000、1270000、600,000)。
我做错了什么?
【问题讨论】:
-
这是个好问题。切片!有效,因为它改变了数组元素,但是 assingment
elem = ...你现在引用了一个不同的对象。请参阅下面的@Thilo 的答案以获得一个不错的选择。 -
您需要提供一个输入数组样本。不要让人们发明输入。
-
感谢大家的指导。很有帮助。
-
如果您发现任何答案有帮助,请选择最有帮助的答案。