我有以下java代码
long x=25782
float y=x/1000000000
而不是如我所期望的那样y等于0.000025782,它等于0.0
我做错了什么?
答案 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;