преобразование десятичных коэффициентов в дробные (UK) коэффициенты в Go - PullRequest
0 голосов
/ 24 мая 2018

Я бы подумал, что это то, что нужно многим людям, но я не могу найти какие-либо пакеты или репозитории / примеры игровых площадок для тех, кто делал это в Go.

Цель состоит в том, чтобыпреобразовать строку / число с плавающей запятой так, чтобы 1.20 (вход) стал 1/5 (выход), * ​​1005 *, 2.38 becomes 11/8 и т. д.

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

С http://mybettingsites.co.uk/bet-calculator/odds-converter/#conversiontable

Как преобразовать десятичные коэффициенты в дробные

Существует два шага для преобразования десятичных коэффициентов в дробные.

Шаг 1) Преобразуйте шансы десятичных дробей в дробь, вычитая 1 и используя 1 в качестве знаменателя.

Пример: 3,40 - 1 = 2,40.Это создает десятичные коэффициенты 2.40 / 1.

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

Шаг 2) Теперь нам нужно превратить эту дробь в ее наиболее простую форму.Найти ближайшее целое число (т.е. без десятичного знака).Коэффициент, на который нужно умножить числитель на целое число, отражается в знаменателе.

Пример: вам нужно умножить 2,40 на 5, прежде чем оно станет округленным числом, 12. Следовательно, дробь становится 12 /5.(2.40 x 2 = 4.80, 2.40 x 3 = 7.20, 2.40 * 4 = 9.60, 2.40 * 5 = 12)

Последний шаг будет достигнут путем умножения верхнего и нижнего на 100 и деления на HCF / LCD.Это можно найти, используя мой другой ответ, при условии, что до того, как вы дали понять, что речь идет о ставках, а не об общих фракциях

0 голосов
/ 24 мая 2018

Вы можете написать свое собственное, которое проверяет количество цифр справа от десятичной точки, скажем, n, а затем выразить это в виде дроби с 10^n в качестве знаменателя.

Затем вы можетеперейти к упрощению дроби путем нахождения наивысшего общего множителя HCF между числителем и знаменателем с использованием евклидова алгоритма, например

// greatest common divisor (GCD) via Euclidean algorithm
func GCD(a, b int) int {
      for b != 0 {
              t := b
              b = a % b
              a = t
      }
      return a
}

https://play.golang.org/p/tYbxNvvHpG

Взято из https://siongui.github.io/2017/05/14/go-gcd-via-euclidean-algorithm/

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