C# 我翻译对了吗?

C# 我翻译对了吗?,c#,vb6,C#,Vb6,对不起,我只是需要一双额外的眼睛,我在猜测我自己。我正在研究从经典的vb6到c#的翻译,我已经查阅了关于运算符优先级的表格,但是我仍然没有正确地计算出来 VB6 C# 有两部分我不清楚: 指数运算符(^)的优先级 VB6自动进行一些舍入 否则,假设变量名对齐,看起来没问题 您可能希望实际使用几个值测试这两个版本,并确保它们的结果相同。如果它们不同,检查更好的舍入并没有使你的C代码实际上更正确 更新: 快速检查可获得最高的频率。然而,这是VB.Net。我找不到vb6的文档,但是,所以我认为你在

对不起,我只是需要一双额外的眼睛,我在猜测我自己。我正在研究从经典的vb6到c#的翻译,我已经查阅了关于运算符优先级的表格,但是我仍然没有正确地计算出来

VB6

C#


有两部分我不清楚:

  • 指数运算符(^)的优先级
  • VB6自动进行一些舍入
否则,假设变量名对齐,看起来没问题

您可能希望实际使用几个值测试这两个版本,并确保它们的结果相同。如果它们不同,检查更好的舍入并没有使你的C代码实际上更正确

更新:

快速检查可获得最高的频率。然而,这是VB.Net。我找不到vb6的文档,但是,所以我认为你在那个部门也没问题。

VB中的第一个因素是m#u,而在C#中是currentAmountSaved。这可能是错误的。

在我看来,您的C代码可能有问题:

Math.Pow((1d + interestRate) / 12d, ...)
您的VB6代码具有:

(1 + m_dblInterestRate / 12) ^ ...
vb6对*和/运算符的优先级高于+和-,因此除法将出现在加法之前。然而,这在C版本中是不正确的,因为括号(即,加法将首先出现,然后是除法)


二元和比除法的过程小。我想你把它和一元运算符(
+5==5
)混淆了,后者的过程比除法更高。

看起来OP通常在变量名中使用伪匈牙利符号编码,所以我猜这是故意的。我的意思是投资vs保存而非匈牙利vs不:)在所有语言中,指数比乘法具有更高的优先级,我相信,在所有语言中,它都是中缀运算符。关于运算符优先级的部分似乎已从在线MSDN VB6文档中删除。啊,那将是问题所在!非常感谢,这是漫长的一天。
Math.Pow((1d + interestRate) / 12d, ...)
(1 + m_dblInterestRate / 12) ^ ...
1 + m_dblInterestRate / 12 != (1d + interestRate) / 12d