【发布时间】:2019-03-08 05:58:26
【问题描述】:
我有这个 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
我做错了什么?
【问题讨论】:
-
您的 Excel 公式中有
10^(PreSkillRating/400),但 C# 中有Math.Pow(PreSkillRating / 400, 10)。这是从10^X到X^10的变化。 -
C# Math.Log 使用自然对数,而 excel 使用十进制对数。所以 Math.Log(10) => 2.302 Excel: Log(10) => 1
-
Aibon 和 Roman,同意你的观点。作为参考,让我为 Math.Pow 添加:docs.microsoft.com/en-us/dotnet/api/… 并提供一个很好的示例。 | Excel LOG(...) 函数:support.office.com/de-de/article/… |对于 Math.Log 函数:support.office.com/de-de/article/… |所以 Math.log10(..) 将是 C# 等价于 Excel LOG
标签: c# excel excel-formula equation-solving