image
1. Objective-C:
double testNum = 367.12459;
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
/// 拼寫輸出中文
formatter.numberStyle = kCFNumberFormatterSpellOutStyle;
/// 如果不設(shè)置locle 跟隨系統(tǒng)語言
formatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];
NSString *spellOutStr = [formatter stringFromNumber:[NSNumber numberWithDouble: testNum]];
NSLog(@"SpellOut 中文: %@", spellOutStr);
/// 拼寫輸出英文
formatter.numberStyle = kCFNumberFormatterSpellOutStyle;
/// 如果不設(shè)置locle 跟隨系統(tǒng)語言
formatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
NSString *spellOutStrEn = [formatter stringFromNumber:[NSNumber numberWithDouble: testNum]];
NSLog(@"SpellOut 英文: %@", spellOutStrEn);
2. Swift5
let number = 367.12459
let numberFormatter = NumberFormatter()
/// 如果不設(shè)置locle 跟隨系統(tǒng)語言
numberFormatter.locale = Locale(identifier: "zh_CN")
numberFormatter.numberStyle = NumberFormatter.Style.spellOut
let numberStr = numberFormatter.string(from: NSNumber(value: number)) ?? ""
print(numberStr)
枚舉類型說明
- None:無類型 輸出:
- Decimal:取小數(shù)點(diǎn)后三位 輸出:367.125
- Currency:格式化為貨幣(保留兩位小數(shù)),貨幣符號跟隨Locale 輸出:$367.12 (或 ¥367.12)
- Percent:格式化為百分?jǐn)?shù)(保留兩位小數(shù)) 輸出:36,712%
- Scientific:格式化為科學(xué)計數(shù)法 輸出:3.6712459E2
- SpellOut:格式化拼寫格式 ,中英文跟隨Locale 輸出:三百六十七點(diǎn)一二四五九 (或three hundred sixty-seven point one two four five nine)
- Ordinal:格式化為序號(保留整數(shù)),中英文跟隨Locale 輸出:368th (或 第367)
- CurrencyISOCode:格式化為貨幣標(biāo)準(zhǔn)碼 輸出:USD 367.12
- CurrencyPlural:格式化為貨幣 輸出:367.12 US dollars (或 367.12 人民幣)**
- CurrencyAccounting:格式化為貨幣會計 輸出:$367.12
1. Objective-C:
typedef CF_ENUM(CFIndex, CFNumberFormatterStyle) { // number format styles
kCFNumberFormatterNoStyle = 0,
kCFNumberFormatterDecimalStyle = 1,
kCFNumberFormatterCurrencyStyle = 2,
kCFNumberFormatterPercentStyle = 3,
kCFNumberFormatterScientificStyle = 4,
kCFNumberFormatterSpellOutStyle = 5,
kCFNumberFormatterOrdinalStyle API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)) = 6,
kCFNumberFormatterCurrencyISOCodeStyle API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)) = 8,
kCFNumberFormatterCurrencyPluralStyle API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)) = 9,
kCFNumberFormatterCurrencyAccountingStyle API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)) = 10,
};
2. Swift
extension NumberFormatter {
public enum Style : UInt {
case none
case decimal
case currency
case percent
case scientific
case spellOut
@available(iOS 9.0, *)
case ordinal
@available(iOS 9.0, *)
case currencyISOCode
@available(iOS 9.0, *)
case currencyPlural
@available(iOS 9.0, *)
case currencyAccounting
}
}