// // KWNCurrencyUtil.m // iCemarose // // Created by lee on 2017/6/15. // Copyright © 2017年 kollway. All rights reserved. // #import "KWMCurrencyUtil.h" #import "KWMUserDao.h" @interface KWMCurrencyUtil () @property (nonatomic, strong) NSNumberFormatter *numberFormatter; @end @implementation KWMCurrencyUtil + (instancetype) sharedInstance { static KWMCurrencyUtil *instance; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ instance = [[super allocWithZone:NULL] init]; }); return instance; } + (instancetype)allocWithZone:(struct _NSZone *)zone { return [self sharedInstance]; } - (NSNumberFormatter *) numberFormatter { if (!_numberFormatter) { _numberFormatter = [[NSNumberFormatter alloc] init]; _numberFormatter.numberStyle = NSNumberFormatterCurrencyStyle; } _numberFormatter.currencyCode = [self getCurrencyCode]; return _numberFormatter; } - (NSString *) getCurrencyCode { // NSString *language = [[NSLocale preferredLanguages] objectAtIndex:0]; // return [language isEqualToString:@"zh-CN"] ? @"CNY" : @"EUR"; // @"EUR" // TODO: 这里应该写到设置中 设置中来设置CurrencyCode // return [@"zh" isEqualToString:[[NSLocale currentLocale] languageCode]] ? @"CNY" : @"EUR"; return [[KWMUserDao shareDao] currencyCode]; } - (NSString *)priceFormattedByCurrencyCode:(NSDecimalNumber *) price { // return [[[self numberFormatter] stringFromNumber:[self calcPriceByCurrencyCode:self.price]] stringByReplacingOccurrencesOfRegex:@"\\.00" withString:@""]; // return [self fixFormatted:[[self numberFormatter] stringFromNumber:[NSDecimalNumber decimalNumberWithString:@"88888.88"]]]; return [self fixFormatted:[[self numberFormatter] stringFromNumber:[self calcPriceByCurrencyCode:price]]]; } - (NSString *)priceFormatted:(NSDecimalNumber *)price { // return [self fixFormatted:[[self numberFormatter] stringFromNumber:[NSDecimalNumber decimalNumberWithString:@"88888.88"]]]; return [self fixFormatted:[[self numberFormatter] stringFromNumber:price]]; } //- (NSString *) - (NSString *)fixFormatted:(NSString *) price { // return [price stringByReplacingOccurrencesOfString:[NSString stringWithFormat:@"%@00",[self numberFormatter].currencyDecimalSeparator] withString:@""]; return price; } - (NSDecimalNumber *) calcPriceByCurrencyCode:(NSDecimalNumber *) price { if ([[self getCurrencyCode] isEqualToString:@"CNY"]) { NSDecimalNumber *rate = [[KWMUserDao shareDao] exchangeRate]; // price = [[rate decimalNumberByMultiplyingBy:price] decimalNumberByMultiplyingBy:[NSDecimalNumber decimalNumberWithString:@"1.03"]]; price = [rate decimalNumberByMultiplyingBy:price]; } return price; } - (NSString *)priceFormatted:(NSDecimalNumber *)price currencyCode:(NSString *)code{ NSNumberFormatter *formatter = [self numberFormatter]; formatter.currencyCode = code; return [formatter stringFromNumber:price]; } @end