2015-06-30 3 views
0

Как получить целую часть и оставшуюся часть номера? Например, у меня есть ряд типа поплавка, 123.456789, и я хочу, чтобы скопировать целую часть числа в int переменной, а остальные числа в float в :Как получить целую часть и оставшуюся часть номера?

float a = 123.456789 
int b = 123 
float c = 0.456789 
+5

Есть много способов сделать это. Вы попробовали что-нибудь самостоятельно? –

+1

Сделайте строку. Разделить на '.'; затем переназначьте разделенные строки. Затем верните тип переменной. Не так много. – Adam

+2

http://stackoverflow.com/questions/5017072/how-to-get-the-decimal-part-of-a-float –

ответ

4

Вы могли бы сделать следующее:

float a = 123.456789f; 
int b = (int)a; //Remove the remainder by casting to `int` 
float c = a - b; 
0

решение "излишество":

float a = 123.456789f; 
int b = (int) Math.floor(a); 
float c = a - b; 
+0

Зачем использовать 'floor()' хотя? Кастинг в int всегда будет округлен. – Marv

+0

@Marv Вот почему я сказал, что это решение «overkill» ... вы уже опубликовали простое, литьевое решение ... Я просто сказал, что это действительно много способов сделать то же самое (некоторые более эффективными и чистыми, чем другие) – Barranka

+1

@Marv - литье и 'Math.floor' дают разные результаты для отрицательных, нецелых чисел. Однако ОП не указала желаемое поведение для отрицательных чисел, поэтому трудно сказать, какой подход здесь предпочтительнее. –

Смежные вопросы