如何在Ruby中将浮点值转换为整数

时间:2019-06-28 16:41:19

标签: ruby

运行测试脚本时,它使用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 = 2948Source = 2990。 实际结果是target =2948source = 299

我关注了“ How to turn float decimal values into integers in ruby”。

1 个答案:

答案 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