Java Math細節考察

牛客網的一道題目,很有意思,非常容易錯。

Java Math細節考察

本以為是

Java Math細節考察

但是最終結果是:

Ceil d1=-0.0

floor d1=-1.0

我們查看一下Math.cell(double a)方法源碼:

Java Math細節考察

關鍵部分註釋:

返回大於或相等於參數的最小(最接近負無窮大)並相等於一個整數的double值。特殊情況:

  • 如果參數值已經等於某個整數,那麼結果是一樣的參數。

  • 如果參數是NaN或無窮大或正零或負零,那麼結果是一樣的參數。

  • 如果參數值小於零,但是大於-1.0,那麼結果是負零。

因此第一個結果是-0.0

再看看Math.floor(double a)的源碼

Java Math細節考察

返回小於或等於參數最大的(最接近正無窮大)一個整數double值。特殊情況:

  • 如果參數值已經等於某個整數,那麼結果是一樣的參數。

  • 如果參數是NaN或無窮大或正零或負零,那麼結果是一樣的參數。

針對 小於0.0和大於-1.0的情況沒有特殊說明。

因此第二個是 -1.0 。


分享到:


相關文章: