首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java中的整数除法

Java中的整数除法
EN

Stack Overflow用户
提问于 2011-08-28 19:34:15
回答 4查看 232K关注 0票数 101

这是一个基本的问题,但我找不到答案。我研究了浮点算术和其他一些主题,但似乎还没有解决这个问题。我确定我只是用错了术语。

基本上,我想取两个数量-已完成和总计-并将它们相除,得出百分比(已完成的数量)。数量是longs。设置如下:

代码语言:javascript
复制
long completed = 25000;
long total = 50000;

System.out.println(completed/total);  // Prints 0

我尝试将结果重新分配给一个双倍打印的0.0。我哪里错了?

顺便说一句,下一步是将这个结果乘以100,我认为一旦跨过这个小障碍,这应该很容易。

顺便说一句,这里没有家庭作业,只是普通的麻木(也许现在有太多的编码)。

EN

回答 4

Stack Overflow用户

发布于 2016-07-15 02:02:49

代码语言:javascript
复制
In Java
Integer/Integer = Integer
Integer/Double = Double//Either of numerator or denominator must be floating point number
1/10 = 0
1.0/10 = 0.1
1/10.0 = 0.1

只需对它们中的任何一个进行类型转换。

票数 8
EN

Stack Overflow用户

发布于 2011-08-28 19:36:35

在进行划分时,将completedtotal都转换为double,或者至少将它们转换为double。例如,将变量转换为双倍,而不仅仅是结果。

公平的警告,在使用floatdouble时有一个floating point precision problem

票数 3
EN

Stack Overflow用户

发布于 2011-08-28 19:36:39

如果在除法之前没有显式地将两个值中的一个转换为浮点数,那么将使用整数除法(这就是为什么你得到0)。您只需要两个操作数中的一个作为浮点值,这样就可以使用正常除法(而其他整数值会自动转换为浮点数)。

只需尝试

代码语言:javascript
复制
float completed = 50000.0f;

一切都会好起来的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7220681

复制
相关文章

相似问题

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