Вечерние все,Xcode need Смешанные фракции, но я вижу быстрые фракции (ОБНОВЛЕНО)
Долгосрочный читатель впервые плакат!
Проблемы
Я пытаюсь преобразовать десятичные смешанные фракции, я новичок в кодировании и исчерпал все свои возможности, используя мои книги, которые я купил и другие посты я сумел получить мое небольшое приложение к виду работы в моду.
Это то, что я пытаюсь сделать: -
- Я прошу у пользователя десятичного значения через текстовое поле
- Они входят 1,25
- он преобразует и вычисляет значение в виде дроби
- затем он выводит значение 5/4
- Но мне нужно, чтобы это было 1 1/4
я знаю (а я надеюсь, что я что-то просто не хватает), но я просто попал я полностью confused.com
Кодекс
- (int)gcdForNumber1:(int) m andNumber2:(int) n
{
while(n!= 0) // execute loop until m == n
{
int temp = n; n = m % temp; m = temp;
}
return (m);
}
- (int)tenRaisedTopower:(int)decimalLength
{
int answer = 10;
while (decimalLength!= 1) {
answer *= 10;
decimalLength -- ;
}
return answer;
}
- (void)floatToFraction:(float)decimalNumber
{
NSString *decimalString = [NSString stringWithFormat:@"%f", decimalNumber];
NSArray *components = [decimalString componentsSeparatedByString:@"."];
int decimalLength = [[components objectAtIndex:1] length];
int n = [self tenRaisedTopower:decimalLength];
int m = [[components objectAtIndex:1] intValue];
int gcd = [self gcdForNumber1:m andNumber2:n];
int numer = m/gcd;
int deno = n/gcd;
int fractionnumer = ([[components objectAtIndex:0] intValue] * deno) + numer;
NSString *fractionvalue = [[NSString alloc] initWithFormat:@"%d/%d", fractionnumer, deno ];
self.metersFractionalOutput.text = fractionvalue;
}
Спасибо за обратную связь Martin R, указатель помог мне начать процесс по математике, поэтому я уверен, что есть, вероятно, более эффективный способ сделать это, но я решил это, выполнив следующие
- (int)gcdForNumber1:(int) m andNumber2:(int) n
{
while(n!= 0) // execute loop until m == n
{
int temp = n; n = m % temp; m = temp;
}
return (m);
}
- (int)tenRaisedTopower:(int)decimalLength
{
int answer = 10;
while (decimalLength!= 1) {
answer *= 10;
decimalLength -- ;
}
return answer;
}
- (void)floatToFraction:(float)decimalNumber
{
NSString *decimalString = [NSString stringWithFormat:@"%f", decimalNumber];
NSArray *components = [decimalString componentsSeparatedByString:@"."];
int decimalLength = [[components objectAtIndex:1] length];
int n = [self tenRaisedTopower:decimalLength];
int m = [[components objectAtIndex:1] intValue];
int gcd = [self gcdForNumber1:m andNumber2:n];
int numer = m/gcd;
int deno = n/gcd;
self.wh = [[components objectAtIndex:0] intValue];
if (numer > deno)
{
int extra = numer/deno;
numer -= extra * deno;
}
NSString *fractionvalue = [[NSString alloc] initWithFormat:@"%d ""%d/%d", self.wh, numer, deno ];
self.metersFractionalOutput.text = fractionvalue;
еще раз спасибо надеюсь, что это помогает кто-то ещеMr H
Ваша линия 'INT fractionnumer = ...' 'явно вычисляет * Дино + Numer = 1 * 4 + 1 = 5', который затем помещается в «значение фракции». –
Случай 'if (number> demo)' никогда не может произойти :-) - Но вы решили свою проблему, это хорошо! –