为了账号安全,请及时绑定邮箱和手机立即绑定

内部划分:为什么1/3 == 0的结果?

内部划分:为什么1/3 == 0的结果?

www说 2019-05-23 10:46:41
内部划分:为什么1/3 == 0的结果?我写的是这段代码:public static void main(String[] args) {     double g = 1 / 3;     System.out.printf("%.2f", g);}结果是0.为什么这样,我该如何解决这个问题?
查看完整描述

4 回答

?
月关宝盒

TA贡献1772条经验 获得超5个赞

两个操作数(1和3)是整数,因此使用整数运算(此处除法)。将结果变量声明为double只会导致在分割后发生隐式转换。

整数除法当然会将除法的真实结果舍入为零。因此,结果在0.333...这里向下舍入为0。(请注意,处理器实际上并没有进行任何舍入,但你可以这样想。)

另请注意,如果两个操作数(数字)都以浮点数形式给出; 3.0和1.0,或者甚至只是第一个,然后使用浮点运算,给你0.333...


查看完整回答
反对 回复 2019-05-23
?
跃然一笑

TA贡献1826条经验 获得超6个赞

1/3 使用整数除法,因为两边都是整数。

你至少需要其中一个float或者double

如果您在源代码中输入值,就像您的问题一样,您可以这样做1.0/3; 这1.0是双重的。

如果从其他地方获得值,您可以使用(double)将其int转换为a double

int x = ...;int y = ...;double value = ((double) x) / y;


查看完整回答
反对 回复 2019-05-23
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

明确地把它作为一个 double

double g = 1.0/3.0

发生这种情况是因为Java使用整数除法运算13因为您将它们作为整数常量输入。


查看完整回答
反对 回复 2019-05-23
?
白板的微信

TA贡献1883条经验 获得超3个赞

你应该使用

double g=1.0/3;

要么

double g=1/3.0;

整数除法返回整数。


查看完整回答
反对 回复 2019-05-23
  • 4 回答
  • 0 关注
  • 828 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信