牛客網的一道題目,很有意思,非常容易錯。
本以為是
但是最終結果是:
Ceil d1=-0.0
floor d1=-1.0
我們查看一下Math.cell(double a)方法源碼:
關鍵部分註釋:
返回大於或相等於參數的最小(最接近負無窮大)並相等於一個整數的double值。特殊情況:
如果參數值已經等於某個整數,那麼結果是一樣的參數。
如果參數是NaN或無窮大或正零或負零,那麼結果是一樣的參數。
如果參數值小於零,但是大於-1.0,那麼結果是負零。
因此第一個結果是-0.0
再看看Math.floor(double a)的源碼
返回小於或等於參數最大的(最接近正無窮大)一個整數double值。特殊情況:
如果參數值已經等於某個整數,那麼結果是一樣的參數。
如果參數是NaN或無窮大或正零或負零,那麼結果是一樣的參數。
針對 小於0.0和大於-1.0的情況沒有特殊說明。
因此第二個是 -1.0 。
閱讀更多 明明如月學長 的文章