标签: java java-8 standards standards-compliance
说我有以下内容......
double d = 1.6; int q = ( ( int ) d );
根据Java标准,这总是会丢弃正好小数点,还是可以根据标准 (或多或少存在)向上或向下舍入 ?
答案 0 :(得分:6)
是的,它会丢弃小数点。这意味着它将向零舍入,所以如果它是正数,它将向下舍入,但如果它是负数,它将向上舍入。
请参阅JLS中的§5.1.3:
否则,如果浮点数不是无穷大,则浮点值将四舍五入为整数值V,使用IEEE 754舍入为零的模式(§4.2.3)向零舍入。 / p>
答案 1 :(得分:0)
将double转换为int始终将值置于小于它的最大整数,但请尝试以下操作:
double
int
int q = (int) Math.round(d); // rounded instead of floored