我想将我的号码格式化为货币字符串.这些是以下情况
25.00 => $25 25.43 => $25.43 25.4 => $25.40 0.00 -> $0
有没有办法在NSNumberFormatter中执行此操作?
这是我现在的代码:
NSNumberFormatter *fmt = [[NSNumberFormatter alloc] init]; [fmt setNumberStyle:NSNumberFormatterCurrencyStyle]; [fmt setCurrencyCode:@"USD"];
我也尝试过:
NSNumberFormatter *fmt = [[NSNumberFormatter alloc] init]; [fmt setPositiveFormat:@"$0.##"];
然而,我的第三个案件失败了.有什么建议?
解决方法
我认为没有办法使用普通的NSNumberFormatter来做到这一点.您可以将最小和最大小数位数设置为0,仅用于格式化NSNumberFormatter子类中的整数:
@interface MyCurrencyFormatter : NSNumberFormatter @end @implementation MyCurrencyFormatter - (id)init { if ((self = [super init])) { [self setNumberStyle:NSNumberFormatterCurrencyStyle]]; [self setCurrencyCode:@"USD"]; } return self; } - (Nsstring *)stringFromNumber:(NSNumber *)aNumber { NSInteger minimumFractionDigits = [self minimumFractionDigits]; NSInteger maximumFractionDigits = [self maximumFractionDigits]; if ([self isInteger:aNumber]) { [self setMinimumFractionDigits:0]; [self setMaximumFractionDigits:0]; } Nsstring *formattednumber = [super stringFromNumber:aNumber]; [self setMinimumFractionDigits:minimumFractionDigits]; [self setMaximumFractionDigits:maximumFractionDigits]; return formattednumber; } - (BOOL)isInteger:(NSNumber *)aNumber { NSDecimal decimalValue = aNumber.decimalValue; NSDecimalRound(&decimalValue,&decimalValue,NSRoundDown); NSDecimalNumber *roundedValue = [[NSDecimalNumber alloc] initWithDecimal:decimalValue] return [aNumber isEqualToNumber:roundedValue]; } @end
这也应该处理国际号码格式.
归功于this post以确定数字是否为整数.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。