Rails / Ruby как всегда показывать десятичную точность - PullRequest
0 голосов
/ 08 июня 2019

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

i = 1
n = 151
sum = (i - 3/8) / (n + 1/4)

это приведет к 0.

Мой вопрос заключается в том, как всегда автоматически показывать десятичную точность при выполнении такого рода вычислений?

Мой желаемый результат: 0,004132231404958678

1 Ответ

5 голосов
/ 08 июня 2019

В ruby ​​все арифметические операции приводят к значению того же типа, что и операнды (с большей точностью).

При этом 3/4 - это целочисленное деление, в результате чего 0.

Чтобы ваш пример работал, вы должны убедиться, что никуда не теряете точность:

i = 1.0
n = 151.0
sum = (i - 3.0/8) / (n + 1/4.0)

Обратите внимание, что, как и на большинстве (если не на всех) языках, Float испорчен:

0.1 + 0.2 #⇒ 0.30000000000000004

Если вам нужно точное значение, вы можете использовать BigDecimal или Rational.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...