提问人:The Nightmare 提问时间:12/8/2014 最后编辑:The Nightmare 更新时间:12/8/2014 访问量:102
int 乘法与浮点乘法的不同结果 [已关闭]
different result of int multiplication vs float multiplication [closed]
问:
我有这个代码:
float number1 = 2f / 12;
System.out.println(number1);
int number2 = 6;
float x = number1 * number2;
System.out.println(x);
作为输出,我得到:
0.16666667
1.0
为什么?当我将 number1 和 number2 相乘时,number2 应该提升为浮点类型,我应该得到 0.96
当我将代码修改为:
float number1 = 0.16f;
System.out.println(number1);
int number2 = 6;
float x = number1 * number2;
System.out.println(x);
我得到了很好的结果:
0.16
0.96
为什么第一个示例中的操作会产生不好的结果?float = float * int
答:
2赞
Maksym
12/8/2014
#1
因为在第二种情况下,您定义了:
float number1 = 0.16f;
//0.16*6=0.96;
但对于第一种情况,你有:
2 / 12 = 0.166666667
0.166666667*6=1
0赞
user719662
12/8/2014
#2
number2 应提升为 float 类型
2号被提升为浮动。
我应该得到 0.96
您应该获得 1.0,因为:
2 / 12 * 6 = 2 / 2 = 1
0.16 * 6 = 0.96
...这就是原因。在这种情况下,它与计算 int 与浮点数算术无关,它只是算术。先算一算!
评论
0赞
12/17/2014
亲爱的反对者,您愿意详细说明这个答案的不足之处吗?
评论