[英]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.