簡體   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