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

在 C# (^) 符号中使用 Excel 公式

在 C# (^) 符号中使用 Excel 公式

C#
梵蒂冈之花 2021-08-07 15:45:38
我试图将此 excel 代码转换为 c#IF(D5=F5,ROUND(((SQRT(F5) +0.0833) ^2),0)我得到的 excel 文件的输出是 19423但是当我对 c# 使用相同的代码时D5 = 19400.25F5 = 19400.25string s = Math.Round(Convert.ToDecimal(Convert.ToInt32((Math.Sqrt(F5) + 0.0833)) ^ 2)).ToString();我得到的输出为 137。我不知道我哪里出错了,我尝试了每件事,但都被困在这件事上。有人可以帮我吗?谢谢是提前。
查看完整描述

3 回答

?
慕侠2389804

TA贡献1719条经验 获得超6个赞

^符号与 Excel 中的幂函数不同。你不能只是一对一地翻译这个。C#^符号执行按位异或

您应该用于翻译此函数的实际 C# 代码:

result = Math.Pow(Math.Sqrt(F5) + 0.0833, 2);


查看完整回答
反对 回复 2021-08-07
?
开满天机

TA贡献1786条经验 获得超13个赞

让我们分解你的 c# 代码:


D5 = 19400.25

F5 = 19400.25

string s = Math.Round(Convert.ToDecimal(Convert.ToInt32((Math.Sqrt(F5) + 0.0833)) ^ 2)).ToString();

//                   î                 î               îî__ are closed here ___îî    îî

//                   |                 |______________ is closed here _______________||

//                   |_________________________ is closed here _______________________|

所以基本上,您正在转换为int以下内容:


Math.Sqrt(F5) + 0.0833 // 139.36[...]

这导致四舍五入,因此139。


然后^2按照 Patrick Hofman 的说法应用(按位异或),结果为137.


然后您将其转换为十进制,并对其进行四舍五入,这实际上并没有太大作用......


在 Excel 中,你是 square Sqrt(F5) + 0.0833,这在 c# 中是这样写的:


Math.Pow(Math.Sqrt(F5)+0.0833,2)

然后你把它圆了。因此,只需将其包装在一个Math.Round:


Math.Round(Math.Pow(Math.Sqrt(F5)+0.0833,2))

但是你只有在D5等于时才这样做F5:


D5 == F5 ? Math.Round(Math.Pow(Math.Sqrt(F5)+0.0833,2)) : 0


查看完整回答
反对 回复 2021-08-07
?
拉丁的传说

TA贡献1789条经验 获得超8个赞

D5 = 19400.25

F5 = 19400.25


double R =  (D5 == F5) ? Math.Pow(Math.Sqrt(F5) + +0.0833, 2) : 0;


String s = Math.Round(R, 0).ToString();

但要注意的是,病情,D5 == F5已经很可疑了。浮点类型的相等性很容易被四舍五入所愚弄。


查看完整回答
反对 回复 2021-08-07
  • 3 回答
  • 0 关注
  • 237 浏览

添加回答

举报

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