关于将一个Double转换为Int的结果的Java标准

时间:2015-01-27 00:26:37

标签: java java-8 standards standards-compliance

说我有以下内容......

double d = 1.6;
int q = ( ( int ) d );

根据Java标准,这总是会丢弃正好小数点,还是可以根据标准 (或多或少存在)向上或向下舍入

2 个答案:

答案 0 :(得分:6)

是的,它会丢弃小数点。这意味着它将向零舍入,所以如果它是正数,它将向下舍入,但如果它是负数,它将向上舍入。

请参阅JLS中的§5.1.3

  

否则,如果浮点数不是无穷大,则浮点值将四舍五入为整数值V,使用IEEE 754舍入为零的模式(§4.2.3)向零舍入。 / p>

答案 1 :(得分:0)

double转换为int始终将值置于小于它的最大整数,但请尝试以下操作:

int q = (int) Math.round(d); // rounded instead of floored