簡體   English   中英

C#Int和數學未返回完整值

[英]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();

我的c110201841664results"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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM