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

Chr*_*ley 2 java standards standards-compliance java-8

说我有以下......

double d = 1.6;
int q = ( ( int ) d );
Run Code Online (Sandbox Code Playgroud)

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

Ale*_*ing 6

是的,它将丢弃小数点.这意味着它将向零舍入,因此如果它是正数则向下舍入,但如果为负则它将向上舍入.

参见JLS中的§5.1.3:

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