我有一个特殊的应用程序需要计算一些非常具体的东西,虽然我擅长逻辑,但数学一直是我的弱点。
给定一个数字,比如 -20,它需要应用一个以 100 为底的计算(即,底是 100,而不是 0。不要与底 100 混淆,这完全是另外一回事)。
换句话说,数学是这样工作的......,105,104,103,102,101,100,-101,-102,-103,-104,-105,...
然后我需要根据这 100 个基数进行数学计算。
因此,例如:
-140 - 20 = 120
-120 - 20 = 100
-115 - 20 = -105
-110 - 20 = -110
-105 - 20 = -115
100 - 20 = -120
120 - 20 = -140
如果有帮助,则问题与体育赔率有关。理论上,这是指金钱(一方面风险 1.40 美元赢取 1.00 美元,另一方面风险 1.00 美元赢取 1.20 美元,0.20 的差异就是赌场所说的“果汁”或他们来回转移资金的部分。)然而,该程序不是处理真钱,它更像是一个模拟器。
我目前的公式是这样的:
decimal CalculateSides(decimal side, decimal vig)
{
decimal newSide = side - vig;
newSide = -(newSide < 0) ? newSide + 100 : newSide - 100;
return (newSide < 0) ? newSide + 100 : newSide - 100;
}
虽然这个公式有效,但我对条件 +/- 不太满意,但这基本上是唯一适合我的公式。
任何人都可以提出一种改进方法吗?最好没有+/-的条件?
编辑:
当我问这个问题时,我知道一个可能的答案是“这可能是你这样做的最佳方式”,这似乎是共识。