运行测试脚本时,它使用split
给出0.2948e4和0.299e4的值。
count.to_s.split('.')[1].to_i
它给我的值为2948和299,但问题出在299值上。我手动执行查询,结果是2990。“ 0”被删除了。
此外,尝试断言是否以正确的方式进行验证? target=source
应该通过而target!=source
应该失败。
这是我尝试过的:
data_one =
def self.row_count(data_one)
r = $dif_env.teradata.fetch "(#{data_one})"
count = Hash[r.map{|key, value| [key, value]}]
target = count.to_s.split('.')[1].to_i
puts target
source = count.to_s.split('.')[2].to_i
puts source
assert_equal 'target=source','target!=source'.nil?
end
预期结果应为target = 2948
和Source = 2990
。
实际结果是target =2948
和source = 299
。
我关注了“ How to turn float decimal values into integers in ruby”。
答案 0 :(得分:3)
count.to_s.split('.')[1].to_i
它给我的值为2948和299,但问题是299的值。我手动执行查询,结果是2990。“ 0”被删除了。
简而言之,这是用科学计数法解析数字的错误方法。尝试以下方法:
'0.299e4'.to_f # => 2990.0
'0.299e4'.to_f.to_i # => 2990