Java - 2 float类型的数组 - 可能发现的精度损失:float required:int

时间:2012-02-17 16:23:21

标签: java arrays arraylist floating-point

我有2个类型为float的数组

float[] a = new float [100]; 
float[] b = new float [100]; 

我希望执行以下内容

for (int i=0; i<100; i++) {
      a[b[i]]++ // Or a[b[i]] + a[b[i]] + 1;
}

错误可能导致精度损失:float required:int

5 个答案:

答案 0 :(得分:1)

a[b[i]]

b[i]是一个浮点数,因此您尝试使用float作为数组的索引。错误消息告诉您正在使用浮点数,但需要一个int。

答案 1 :(得分:0)

您不能使用“b”数组返回的float来访问“a”数组。你必须转换为int。

答案 2 :(得分:0)

数组的索引是整数,因此您不能使用float来尝试访问数组中的特定元素。您需要更改数组的类型,或者将浮点数从b[i]转换为int,然后将其用作访问a的索引。

答案 3 :(得分:0)

我不是故意粗鲁,而是为什么?

无论您是否无法使用浮点值引用数组的索引,这就是您收到该错误的原因。如果你真的必须那么你需要将b [i]的值转换为int。

答案 4 :(得分:0)

每个人都已经指出数组索引是整数,但如果使用int(b[i]进行转换,则可能会出现舍入错误。首先尝试对其进行舍入,然后进行转换:

a[int(Math.round(b[i])]++