尝试将 Excel 方程转换为 C#
Trying to Convert Excel Equation to C#
我有这个 Excel 方程,我正在努力将它转换成 c#。
"to the power of" 和 "log" 部分让我感到困惑。
excel等式如下:
LOG((10^(PreSkillRating/400)/((-ChangeInRating/KFactor)+1)-10^(PreSkillRating/400)))*400/LOG(10)
到目前为止我有这个:
Math.Log((Math.Pow(PreSkillRating / 400, 10)) / (((ChangeInRating * -1) / KFactor) + 1) - Math.Pow((PreSkillRating / 400), 10)) * 400 / Math.Log(10)
我还知道我必须在除以停止尝试除以零错误时检查 0。
例如,当我对每个变量使用以下值时,我在 excel 中得到 1879.588002 作为答案,但在 c# 中得到无穷大。
PreSkillRating = 1600
ChangeInRating = 50
KFactor = 60
我做错了什么?
你的变量是int值吗?
然后你必须添加一个类型转换。参见 Division in C# to get exact value
否则除法按整数除法进行,每步分别进行舍入运算
根据之前的评论和我的第一个回答,我们总结一下:
- 双除法的类型转换
- Pow 的参数顺序错误
- 错误的方法Math.Log(x)。您可以使用 Math.Log(x,10) 或 Math.Log10(x)
尝试以下实施:
Math.Log10((Math.Pow(10, (double)PreSkillRating / 400)) / (((ChangeInRating * -1.0) / KFactor) + 1) - Math.Pow(10, (double)PreSkillRating / 400)) * 400 / Math.Log10(10)
我有这个 Excel 方程,我正在努力将它转换成 c#。
"to the power of" 和 "log" 部分让我感到困惑。
excel等式如下:
LOG((10^(PreSkillRating/400)/((-ChangeInRating/KFactor)+1)-10^(PreSkillRating/400)))*400/LOG(10)
到目前为止我有这个:
Math.Log((Math.Pow(PreSkillRating / 400, 10)) / (((ChangeInRating * -1) / KFactor) + 1) - Math.Pow((PreSkillRating / 400), 10)) * 400 / Math.Log(10)
我还知道我必须在除以停止尝试除以零错误时检查 0。
例如,当我对每个变量使用以下值时,我在 excel 中得到 1879.588002 作为答案,但在 c# 中得到无穷大。
PreSkillRating = 1600
ChangeInRating = 50
KFactor = 60
我做错了什么?
你的变量是int值吗? 然后你必须添加一个类型转换。参见 Division in C# to get exact value
否则除法按整数除法进行,每步分别进行舍入运算
根据之前的评论和我的第一个回答,我们总结一下:
- 双除法的类型转换
- Pow 的参数顺序错误
- 错误的方法Math.Log(x)。您可以使用 Math.Log(x,10) 或 Math.Log10(x)
尝试以下实施:
Math.Log10((Math.Pow(10, (double)PreSkillRating / 400)) / (((ChangeInRating * -1.0) / KFactor) + 1) - Math.Pow(10, (double)PreSkillRating / 400)) * 400 / Math.Log10(10)