Как преобразовать значения с плавающей точкой в ​​целые числа в Ruby - PullRequest
0 голосов
/ 28 июня 2019

Когда я запускаю свой тестовый скрипт, он дает значения как 0.2948e4 и 0.299e4, используя split.

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.

Я следовал " Как преобразовать десятичные значения с плавающей запятой в целые числа в ruby ​​".

1 Ответ

3 голосов
/ 28 июня 2019

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...