Как округлить очень маленькое число с плавающей запятой с конечными нулями? - PullRequest
2 голосов
/ 03 апреля 2020

В настоящее время мой код отображает число:

x = 0.000092627861766
p x

как что-то вроде формата BigInt, такого что:

=> 9.0e-05 

Есть ли метод, который я могу вызвать для переменной, чтобы вернуть округленное число с плавающей запятой (в формате числа или строки), такое что:

x.some_method
# Always show N number of digits after the initial decimal point.
=> 0.00009263 
OR 
=> "0.00009263"

Ответы [ 2 ]

5 голосов
/ 03 апреля 2020

Вы можете установить количество отображаемых цифр:

p "%0.08f" % x # => "0.00009263"
1 голос
/ 03 апреля 2020

Вы можете определить новый метод для этого. Я использую BigDecimal только для точности и предотвращения неожиданного результата, но я думаю, что вы можете сделать то же самое в Float:

require 'bigdecimal'
class BigDecimal
  def round_after_n(n)
    round(self.exponent.abs + n + 1)
  end
end
x = BigDecimal('0.000092627861766')
#  => 0.926279e-4 
x.round_after_n(5).to_s('F')
#  => "0.0000926279"
...