Насправді, існують різні способи заниження float до int, залежно від результату, який ви хочете досягти: (for int i
, float f
)
круглий (найближче ціле число до заданого поплавця)
i = Math.round(f);
f = 2.0 -> i = 2 ; f = 2.22 -> i = 2 ; f = 2.68 -> i = 3
f = -2.0 -> i = -2 ; f = -2.22 -> i = -2 ; f = -2.68 -> i = -3
Примітка: це, за контрактом, дорівнює (int) Math.floor(f + 0.5f)
обрізати (тобто скинути все після десяткової крапки)
i = (int) f;
f = 2.0 -> i = 2 ; f = 2.22 -> i = 2 ; f = 2.68 -> i = 2
f = -2.0 -> i = -2 ; f = -2.22 -> i = -2 ; f = -2.68 -> i = -2
стеля / підлога (ціле число завжди більше / менше заданого значення, якщо воно має якусь дробову частину)
i = (int) Math.ceil(f);
f = 2.0 -> i = 2 ; f = 2.22 -> i = 3 ; f = 2.68 -> i = 3
f = -2.0 -> i = -2 ; f = -2.22 -> i = -2 ; f = -2.68 -> i = -2
i = (int) Math.floor(f);
f = 2.0 -> i = 2 ; f = 2.22 -> i = 2 ; f = 2.68 -> i = 2
f = -2.0 -> i = -2 ; f = -2.22 -> i = -3 ; f = -2.68 -> i = -3
Для округлення позитивних значень можна також просто використовувати (int)(f + 0.5)
, що працює точно так само, як і Math.Round
в тих випадках (відповідно до документа).
Ви також можете використовувати , Math.rint(f)
щоб зробити округлення до найближчого парного цілого ; це, мабуть, корисно, якщо ви розраховуєте на багато поплавків з дробовою частиною, точно рівній 0,5. ви введете ще одне зміщення, хоча парні числа будуть частішими, ніж непарні.
Подивитися
http://mindprod.com/jgloss/round.html
http://docs.oracle.com/javase/6/docs/api/java/lang/Math.html
для отримання додаткової інформації та деяких прикладів.