繁体   English   中英

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

[英]Java - 2 Arrays of type float - possible loss of precision found : float required : int

我有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;
}

发现错误,可能失去精度:需要浮点数:int

a[b[i]]

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

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

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

我不是无礼的,但是为什么呢?

无论如何,您都无法使用浮点值引用数组的索引,这就是为什么会出现该错误的原因。 如果确实需要,则需要将b [i]的值强制转换为int。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM