Go语言 在围棋中将小数赔率转换为分数(UK)赔率

dphi5xsq  于 2023-02-06  发布在  Go
关注(0)|答案(3)|浏览(85)

我本以为这是很多人都需要的东西,但我似乎找不到任何在Go语言中做过这件事的软件包或repos/playground示例。
我们的目标是转换字符串/浮点型,使1.20(输入)变为1/5(输出)、1.29 becomes 2/72.38 becomes 11/8等。

hwazgwia

hwazgwia1#

来自www.example.comhttp://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。这可以使用我的另一个答案找到,前提是在你明确表示这是关于赌博,而不是一般分数之前

rryofs0p

rryofs0p2#

你可以自己写一个程序,检查小数点右边的数字个数,比如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/

1yjd4xko

1yjd4xko3#

我也遇到过类似的问题,最后利用了javascript中的“分数”库。
https://www.npmjs.com/package/fractional
然后我就可以简单地做:

new Fraction(decimalOdds - 1).toString()

瞧,这与专业预订网站上的分数赔率相符

相关问题