计算总是导致零

时间:2014-05-07 13:09:13

标签: java

我有以下java代码

long x=25782

float y=x/1000000000

而不是如我所期望的那样y等于0.000025782,它等于0.0

我做错了什么?

4 个答案:

答案 0 :(得分:5)

您按long类型划分,因此会向下舍入为0

请改用:

float y=x/1000000000.0;

答案 1 :(得分:1)

整数除法给出整数结果

这是整数除法;在整数除法中,答案总是一个整数(通过截断非整数部分,而不是舍入)。然后你将其投入浮动。

最简单的解决方案是至少包含1个浮点数。所以

long x=25782

float y=x/1000000000f //(or 1000000000.0) 

你在做什么

float y=x/1000000000;
float y=(float)(int)(x/1000000000);
float y=(float)(int)(25782/1000000000);
float y=(float)0;
float y=0.0;

答案 2 :(得分:0)

Int和long除法总是导致int和long。

计算中的至少一个操作数需要是float或double

答案 3 :(得分:0)

你有一个整数除法,它将舍入到小数点的右边,因为整数除法给出了整数结果。

您应该将x转换为浮动。

尝试:

float y=(float)x/1000000000;