Подтвердить что ты не робот

Как преобразовать строку научной нотации в десятичную нотацию?

Я хотел бы find и convert все строки научной нотации в файле csv для десятичной нотации, например:

1.0e-05 to 0.00001

Как я могу сделать это в ruby?

4b9b3361

Ответ 1

Просто используйте преобразование строк. Необходимое принуждение к поплавке будет выполнено автоматически:

"%f" % "1.0e-05"
=> "0.000010"

# Which, behind the scenes is the same as:
"%f" % "1.0e-05".to_f
=> "0.000010"

Отрегулируйте по мере необходимости, чтобы получить более-менее точность. Например:

"%.5f" % "1.0e-05"
=> "0.00001"

Если вы хотите получить настоящую фантазию и отрубить ненужные нули в конце, вот один из способов. (Надеюсь, кто-то предложит что-то более элегантное, я ничего не мог придумать):

("%.20f" % "1.0e-05").sub(/\.?0*$/, "")
=> "0.00001"

Ответ 2

Если вам интересно делать какую-либо математику по числу, и она слишком мала:

"%f" % "1.0e-10"
=> "0.000000"

# not so good for various reasons
("%f" % "1.0e-10") == ("%f" % "1.0e-8")
=> true

Вы можете использовать BigDecimal:

BigDecimal.new "1.0e-10"
=> #<BigDecimal:7ffdf6c38678,'0.1E-9',9(18)>