Int64 c1 = Convert.ToInt64(csvdeep[1]);
Int64 division = 1024;
string results = Math.Abs(c1 / division / division / division).ToString();
我的c1
为10201841664
,results
为"9"
。
我宁愿得到小数点后两位,所以我的实际结果是9.50。关于如何获得2位小数的任何提示?
答案 0 :(得分:12)
这是.NET中整数除法的结果 - 当划分两个整数时,你总是得到一个整数。
您需要至少有一个操作数是浮点类型(float,double,decimal),以使结果成为浮点。
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");
答案 1 :(得分:2)
你可以尝试:
string results = Math.Abs(((double)c1)/division/division/division)
.ToString("0.00");
通过将第一个值(c1
)转换为浮点值而不是整数,您也可以强制除法的结果成为浮点数。
然后会强制使用Math.Abs(double)
而不是Math.Abs(long)
答案 2 :(得分:1)
尝试
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");
答案 3 :(得分:0)
您在这里使用整数除法。这就是为什么它没有显示任何小数位。