为了账号安全,请及时绑定邮箱和手机立即绑定

尝试将 Excel 公式转换为 C#

尝试将 Excel 公式转换为 C#

C#
慕后森 2022-10-15 14:59:24
我有这个 Excel 方程,我正在努力将它转换成 c#。“力量”和“日志”部分让我绊倒了。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 = 1600ChangeInRating = 50KFactor = 60我究竟做错了什么?
查看完整描述

2 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

你的变量是int值吗?然后你必须添加一个类型转换。请参阅C# 中的除法以获取确切值

否则,除法将作为整数除法执行,这会分别导致每个步骤的舍入操作。


查看完整回答
反对 回复 2022-10-15
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

根据早期的评论和我的第一个答案,让我们总结一下:

  • 双除法的类型转换

  • 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)



查看完整回答
反对 回复 2022-10-15
  • 2 回答
  • 0 关注
  • 154 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信