[英]C# Int and math not returning full value
Int64 c1 = Convert.ToInt64(csvdeep[1]);
Int64 division = 1024;
string results = Math.Abs(c1 / division / division / division).ToString();
我的c1
是10201841664
, results
是"9"
。
我希望獲得小數點后兩位,所以我的實際結果是9.50。 關於如何獲得小數點后兩位的任何提示?
那是.NET中整數除法的結果-當除以兩個整數時,您總是會得到一個整數。
您需要至少一個操作數為浮點類型(浮點,雙精度,十進制),才能使結果為浮點。
Int64 c1 = Convert.ToInt64(csvdeep[1]);
double division = 1024.0m;
string results = Math.Abs(c1 / division / division / division).ToString();
這樣的結果可能會比您想要的小數位數更多,因此您需要在對ToString
的調用中使用格式字符串:
string results = Math.Abs(c1 / division / division / division).ToString("0.00");
您可以嘗試:
string results = Math.Abs(((double)c1)/division/division/division)
.ToString("0.00");
通過將第一個值( c1
)轉換為浮點值而不是整數,可以強制除法結果也變為浮點。
然后,這將強制使用Math.Abs(double)
而不是Math.Abs(long)
嘗試
Int64 c1 = 10201841664;
Int64 division = 1024;
string results = Math.Abs((decimal)c1/division/division/division).ToString("0.00");
你甚至可以去
Int64 c1 = 10201841664;
Int64 division = 1024;
string results = Math.Abs((double)c1 / Math.Pow((double)division, 3)).ToString("0.00");
您在這里使用整數除法。 這就是為什么它不顯示任何小數位的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.