Преобразовать числа с плавающей точкой в ​​целые часы и минуты - PullRequest
3 голосов
/ 28 ноября 2011

Я использую стандартное уравнение расстояние / скорость = время прибытия .Это прекрасно работает, но ответом является число с плавающей точкой, и большинству людей было бы неловко конвертировать что-то вроде 1,75 часа в 1 час и 45 минут.

Я хочу взять окончательный результат числа с плавающей точкой и извлечьчас (ы) отдельно от минут в виде целых чисел.

Вот что я пробовал:

-(IBAction)calculate:(id)sender {

float spd=[speed.text floatValue];

float dist=[distKnots.text floatValue];

//this give me the answer as a float

float arr=(dist/bs);

//this is how I showed it as an answer

//Here I need to convert "arr" and extract the hours & minutes as whole integers

arrivalTime.text=[NSString stringWithFormat:@"%0.02f", arr];

[speed resignFirstResponder];
}

И это преобразование я пытался сделать - и на бумаге это работает, но в коде полно ошибок:

int justHours = arr*60;

int justMinutes = (arr*60)-(justHours*60);

//then for the user friendly answer:

arrivalTime.text=[NSString stringWithFormat:@"%n hours and %n minutes", justHours, justMinutes];

Я новичок в Objective-C и надеюсь, что есть способ заставить это работать или лучший способ решить эту проблему.

Ответы [ 3 ]

3 голосов
/ 28 ноября 2011

Ваша переменная arr уже измерена в часах, поэтому вам не нужно ее масштабировать, просто округлите ее вниз:

int justHours = (int)arr;

и тогда ваши минуты в шестьдесят раз больше (целочисленной) разницы междуисходные и округленные часы (т.е. дробная часть).

int justMinutes = (int)((arr - justHours) * 60);
0 голосов
/ 28 ноября 2011

проверьте класс NSNumber numberFormater.Я полагаю, что вы можете обернуть ваш поплавок в формат времени и вернуть его пользователю.

0 голосов
/ 28 ноября 2011

Кажется, что int justHours = arr/60; неверно, должно быть int justHours = arr;.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...