首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#整数和数学不返回全值

问C#整数和数学不返回全值
EN

Stack Overflow用户
提问于 2010-04-08 01:52:37
回答 4查看 557关注 0票数 1
代码语言:javascript
复制
Int64 c1 = Convert.ToInt64(csvdeep[1]);
Int64 division = 1024;
string results = Math.Abs(c1 / division / division / division).ToString();

我的c1是10201841664,results是"9"。

我更喜欢得到小数点后两位,所以我的实际结果应该是9.50。有什么关于如何得到小数点后两位的建议吗?

EN

回答 4

Stack Overflow用户

发布于 2010-04-08 01:54:24

这是.NET中整数除法的结果-当除以两个整数时,你总是得到一个整数。

您需要至少有一个操作数是浮点类型(浮点、双精度、小数),才能使结果成为浮点。

代码语言:javascript
复制
Int64 c1 = Convert.ToInt64(csvdeep[1]);
double division = 1024.0m;
string results = Math.Abs(c1 / division / division / division).ToString();

这样做的结果可能会比您想要的小数位数多,因此您需要在调用ToString时使用格式字符串

代码语言:javascript
复制
string results = Math.Abs(c1 / division / division / division).ToString("0.00");
票数 12
EN

Stack Overflow用户

发布于 2010-04-08 01:54:25

您可以尝试:

代码语言:javascript
复制
string results = Math.Abs(((double)c1)/division/division/division)
    .ToString("0.00");

通过将第一个值(c1)转换为浮点值而不是整数,可以强制将除法的结果也转换为浮点数。

这将强制使用Math.Abs(double)而不是Math.Abs(long)

票数 2
EN

Stack Overflow用户

发布于 2010-04-08 01:56:27

试一试

代码语言:javascript
复制
Int64 c1 = 10201841664;
Int64 division = 1024;
string results = Math.Abs((decimal)c1/division/division/division).ToString("0.00"); 

你甚至可以去

代码语言:javascript
复制
Int64 c1 = 10201841664;
Int64 division = 1024;
string results = Math.Abs((double)c1 / Math.Pow((double)division, 3)).ToString("0.00"); 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2594691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档