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 。


分享到:


相關文章: