簡體   English   中英

數組中的小數位? (Java)

[英]Decimal positions in an array? (Java)

我看過這段代碼,應該很好,我不明白為什么如果“ left + right”是一個奇數,為什么執行“ a [middle] == 0”不會給出錯誤,因為它不會在數組中不存在小數點位置。 謝謝。

/** Searches the value 0 within a[left..right].
* Precondition: 0 <= left, right < a.length,
* a[left..right] is sorted in ascending order. */

public static int intercepts(double[] a, int left, int right) {
if (left > right) { return -1; }
else {
int middle = (left + right) / 2;
if (a[middle] == 0) { return middle; }
else if (a[middle] > 0) {
return intercepts(a, left, middle - 1);
} else {
return intercepts(a, middle + 1, right); }
}
}

leftright2都是整數,因此將執行整數除法 ,結果也將是整數。 整數除法向0舍入,因此所有小數都被截斷。

自己看看

public static void main (String[] args) {
    int middle = 5 / 2;
    System.out.println(middle); // 2
}

由於兩個操作數( leftright )是整數,因此使用整數算術。 應用除法后,結果的其余部分將“舍入”為零。

5/2 = 2
7/3 = 2 
8/3 = 2

請參閱以下文章,以獲得更好的解釋。 整數除法:為什么1/3 == 0的結果?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM