2011-03-27 5 views
2

나는 상한 느낌이 들며 포기하고 싶다. 그냥 내가 1,302.22와 ".22"부분을 추가하고 싶다고 말하면, 나타나지 않습니다. "44.55"와 50 센트를 더하는 다음 통화는 표시되지 않습니다. 나에게 ".00"이라는 두통을주지 않고이 문제를 어떻게 해결할 수 있습니까?"센트"부분이 표시되지 않는 경우 통화 값을 계산하는 방법은 무엇입니까?


double currency = [Amount1.text doubleValue] + [Amount2.text doubleValue]; 
NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init] autorelease]; 
[numberFormatter setNumberStyle: NSNumberFormatterCurrencyStyle]; 
NSString *numberAsString = [numberFormatter stringFromNumber:[NSNumber numberWithInt:currency]]; 
Currency.text = [NSString stringWithFormat:@"%@",numberAsString]; 

답변

3

나는 문제가 여기에있다 의심 :

NSString *numberAsString = [numberFormatter stringFromNumber:[NSNumber numberWithInt:currency]]; 

[의 NSNumber numberWithInt : 통화]은 정수 값에서하는의 NSNumber 개체를 만듭니다. 전달할 정수 값은 currency입니다. 그러나 통화 유형은 두 배입니다. double 생각하는

쉬운 방법은 소수점이있는 숫자를 생각하는 것입니다. integer을 생각해 볼 수있는 쉬운 방법은 소수점이없는 숫자를 생각하는 것입니다. 소수점을 추가하거나 제거하여 개념적으로 변환 할 수 있습니다.

당신이 기대 방법 및 정수에 두 번 통과하고 있기 때문에, 당신은 절단을 얻고있다. 예를 들어

: 당신이 int로 변환 할 때 이중 1035.551035된다.

numberWithIntnumberWithDouble으로 변경하고 운이 좋으면보십시오. 또한

은 포기하지 않습니다. 우리는 모두 거기 있었어요 : D

1

당신은 코드를 상당히 축소 할 수 있습니다 :

double currency = [Amount1.text doubleValue] + [Amount2.text doubleValue]; 
Currency.text = [NSString stringWithFormat:@"%f", currency]; 

포기하지 마세요, 당신이 얻을 것이다 :

관련 문제