我本以为这是很多人都需要的东西,但我似乎找不到任何在Go语言中做过这件事的软件包或repos/playground示例。我们的目标是转换字符串/浮点型,使1.20(输入)变为1/5(输出)、1.29 becomes 2/7、2.38 becomes 11/8等。
1.20
1/5
1.29 becomes 2/7
2.38 becomes 11/8
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。这可以使用我的另一个答案找到,前提是在你明确表示这是关于赌博,而不是一般分数之前
(2.40 x 2 = 4.80, 2.40 x 3 = 7.20, 2.40 * 4 = 9.60, 2.40 * 5 = 12)
rryofs0p2#
你可以自己写一个程序,检查小数点右边的数字个数,比如n,然后把它表示成一个以10^n为分母的分数。然后你可以继续简化分数,用欧几里得算法求出分子和分母之间的最大公因子HCF,例如。
n
10^n
// 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/
1yjd4xko3#
我也遇到过类似的问题,最后利用了javascript中的“分数”库。https://www.npmjs.com/package/fractional然后我就可以简单地做:
new Fraction(decimalOdds - 1).toString()
瞧,这与专业预订网站上的分数赔率相符
3条答案
按热度按时间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。这可以使用我的另一个答案找到,前提是在你明确表示这是关于赌博,而不是一般分数之前
rryofs0p2#
你可以自己写一个程序,检查小数点右边的数字个数,比如
n
,然后把它表示成一个以10^n
为分母的分数。然后你可以继续简化分数,用欧几里得算法求出分子和分母之间的最大公因子HCF,例如。
https://play.golang.org/p/tYbxNvvHpG
取自https://siongui.github.io/2017/05/14/go-gcd-via-euclidean-algorithm/
1yjd4xko3#
我也遇到过类似的问题,最后利用了javascript中的“分数”库。
https://www.npmjs.com/package/fractional
然后我就可以简单地做:
瞧,这与专业预订网站上的分数赔率相符