2013-01-08 3 views
-2

У меня есть простое приложение, которое я пытаюсь сделать, чтобы добавить два NSStrings вместе и произвести значение в метке.Добавление NSStrings Together Rounding Issue

NSString *one= @"0.00"; 
NSString *two= @"20.15"; 

NSString *total = [[NSString alloc] initWithFormat:@"%d",[one integerValue] + [two integerValue]]; 

label.text = [NSString stringWithFormat:@"%@",total]; 

Это прекрасно работает, за исключением того, что я хочу, чтобы он учитывал числа, прошедшие после десятичной. Выход будет 20, а не 20.15.

+0

Удивительно, три ответа, а не один простой 'NSString stringWithFormat:' из вопроса! – zaph

+0

@ Zaph haha, мы скопировали и вставили код OP. –

+0

Эй, ребята, просто хочу еще раз поблагодарить вас за быстрые ответы. – Zack

ответ

2

Используйте поплавки вместо целых

NSString *total = [[NSString alloc] initWithFormat:@"%f",[one floatValue] + [two floatValue]]; 

Если вы хотите указать два знака после запятой, замените %f с %.2f

Примечания, [two integerValue] вычисляет 20 в вашем примере. Вы теряете десятичную точность с этой точки.

+0

+1 для быстрого ответа. Благодаря! – Zack

1

Целые числа не имеют десятичных знаков.

Try:

NSString *total = [NSString stringWithFormat:@"%f", [one floatValue] + [two floatValue]]; 
+0

+1 для быстрого ответа. Благодаря! – Zack

2

Найти floatValue в NSString вместо intValue. Целые числа - это целые числа, поэтому все после запятой игнорируется.

NSString *one= @"0.00"; 
NSString *two= @"20.15"; 

NSString *total = [NSString stringWithFormat:@"%f", [one floatValue] + [two floatValue]]; 

label.text = total; 
+0

Спасибо. Так много быстрых ответов +1. Но так как вы были первыми, кто был точным, вы были правильными. – Zack