3 回答
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
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已经很可疑了。浮点类型的相等性很容易被四舍五入所愚弄。
- 3 回答
- 0 关注
- 237 浏览
添加回答
举报