如果“美分”部分没有显示,如何计算货币值?

时间:2011-03-27 19:43:30

标签: iphone objective-c cocoa

我是一个心痛的人,想要放弃。我们只想说我要添加1,302.22和“.22”部分,不显示。下一个货币我加“44.55”和五十五美分将不会出现。如何解决这个问题而不会让我头疼“.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];

2 个答案:

答案 0 :(得分:3)

我怀疑问题出在这里:

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

[NSNumber numberWithInt:currency] 从整数值创建NSNumber对象。您传入的整数值为currency。但是,货币的类型是双倍的。

想到double的简单方法是考虑具有小数点的数字。想到integer的简单方法是考虑一个没有小数点的数字。您可以通过添加或删除小数点在概念上进行转换。

由于您正在将double传递给期望和整数的方法,因此您将被截断。

例如:当您将其转换为int时,双1035.55变为1035

尝试将numberWithInt更改为numberWithDouble并查看您是否有更好的运气。

另外,不要放弃。我们都去过那里:D

答案 1 :(得分:1)

您可以压缩代码:

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

不要放弃,你会到达那里:)