3 回答

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個(gè)贊
讓我們分解你的 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 _______________________|
所以基本上,您正在轉(zhuǎn)換為int以下內(nèi)容:
Math.Sqrt(F5) + 0.0833 // 139.36[...]
這導(dǎo)致四舍五入,因此139。
然后^2按照 Patrick Hofman 的說(shuō)法應(yīng)用(按位異或),結(jié)果為137.
然后您將其轉(zhuǎn)換為十進(jìn)制,并對(duì)其進(jìn)行四舍五入,這實(shí)際上并沒(méi)有太大作用......
在 Excel 中,你是 square Sqrt(F5) + 0.0833,這在 c# 中是這樣寫(xiě)的:
Math.Pow(Math.Sqrt(F5)+0.0833,2)
然后你把它圓了。因此,只需將其包裝在一個(gè)Math.Round:
Math.Round(Math.Pow(Math.Sqrt(F5)+0.0833,2))
但是你只有在D5等于時(shí)才這樣做F5:
D5 == F5 ? Math.Round(Math.Pow(Math.Sqrt(F5)+0.0833,2)) : 0

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超8個(gè)贊
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已經(jīng)很可疑了。浮點(diǎn)類(lèi)型的相等性很容易被四舍五入所愚弄。
- 3 回答
- 0 關(guān)注
- 277 瀏覽
添加回答
舉報(bào)