iOS之阿拉伯數(shù)字轉中文數(shù)字

這里總共介紹兩種方法:

方法一:

    double testNum = 3.7999;

    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
/*
typedef CF_ENUM(CFIndex, CFNumberFormatterRoundingMode) { 
  kCFNumberFormatterRoundCeiling = 0,  //四舍五入,直接輸出4 
  kCFNumberFormatterRoundFloor = 1 ,    //保留小數(shù)輸出3.8 
  kCFNumberFormatterRoundDown = 2,   //加上了人民幣標志,原值輸出¥3.8 
  kCFNumberFormatterRoundUp = 3,      //本身數(shù)值乘以100后用百分號表示,輸出380% 
  kCFNumberFormatterRoundHalfEven = 4,//輸出3.799999999E0 
  kCFNumberFormatterRoundHalfDown = 5,//原值的中文表示,輸出三點七九九九仅淑。。。。
   kCFNumberFormatterRoundHalfUp = 6//原值中文表示,輸出第四

typedef NS_ENUM(NSUInteger, NSNumberFormatterStyle) {
 NSNumberFormatterNoStyle = kCFNumberFormatterNoStyle,
 NSNumberFormatterDecimalStyle = kCFNumberFormatterDecimalStyle,
 NSNumberFormatterCurrencyStyle = kCFNumberFormatterCurrencyStyle,
 NSNumberFormatterPercentStyle = kCFNumberFormatterPercentStyle,
 NSNumberFormatterScientificStyle = kCFNumberFormatterScientificStyle,
 NSNumberFormatterSpellOutStyle = kCFNumberFormatterSpellOutStyle,
 NSNumberFormatterOrdinalStyle NS_ENUM_AVAILABLE(10_11, 9_0) = kCFNumberFormatterOrdinalStyle,
 NSNumberFormatterCurrencyISOCodeStyle NS_ENUM_AVAILABLE(10_11, 9_0) = kCFNumberFormatterCurrencyISOCodeStyle,
 NSNumberFormatterCurrencyPluralStyle NS_ENUM_AVAILABLE(10_11, 9_0) = kCFNumberFormatterCurrencyPluralStyle,
 NSNumberFormatterCurrencyAccountingStyle NS_ENUM_AVAILABLE(10_11, 9_0) = kCFNumberFormatterCurrencyAccountingStyle,
 };

*/

    formatter.numberStyle = kCFNumberFormatterRoundHalfDown;
//    NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_Hans"];
//    formatter.locale = locale;
    NSString *string = [formatter stringFromNumber:[NSNumber numberWithDouble: testNum]];
    NSLog(@"%@",string);
};

注意:必須手機系統(tǒng)語言為中文的前提下才可用整吆,如果是非中文環(huán)境需要加上中文輸出限制.為準確輸出奶甘,建議使用double類型

NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_Hans"];
formatter.locale = locale;
中文語言環(huán)境輸出.png
英文語言環(huán)境輸出.png

方法二 算法實現(xiàn)

/**
 *  將阿拉伯數(shù)字轉換為中文數(shù)字
 */
-(NSString *)translationArabicNum:(NSInteger)arabicNum
{
    NSString *arabicNumStr = [NSString stringWithFormat:@"%ld",(long)arabicNum];
    NSArray *arabicNumeralsArray = @[@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"0"];
    NSArray *chineseNumeralsArray = @[@"一",@"二",@"三",@"四",@"五",@"六",@"七",@"八",@"九",@"零"];
    NSArray *digits = @[@"個",@"十",@"百",@"千",@"萬",@"十",@"百",@"千",@"億",@"十",@"百",@"千",@"兆"];
    NSDictionary *dictionary = [NSDictionary dictionaryWithObjects:chineseNumeralsArray forKeys:arabicNumeralsArray];
    
    if (arabicNum < 20 && arabicNum > 9) {
        if (arabicNum == 10) {
            return @"十";
        }else{
            NSString *subStr1 = [arabicNumStr substringWithRange:NSMakeRange(1, 1)];
            NSString *a1 = [dictionary objectForKey:subStr1];
            NSString *chinese1 = [NSString stringWithFormat:@"十%@",a1];
            return chinese1;
        }
    }else{
        NSMutableArray *sums = [NSMutableArray array];
        for (int i = 0; i < arabicNumStr.length; i ++)
        {
            NSString *substr = [arabicNumStr substringWithRange:NSMakeRange(i, 1)];
            NSString *a = [dictionary objectForKey:substr];
            NSString *b = digits[arabicNumStr.length -i-1];
            NSString *sum = [a stringByAppendingString:b];
            if ([a isEqualToString:chineseNumeralsArray[9]])
            {
                if([b isEqualToString:digits[4]] || [b isEqualToString:digits[8]])
                {
                    sum = b;
                    if ([[sums lastObject] isEqualToString:chineseNumeralsArray[9]])
                    {
                        [sums removeLastObject];
                    }
                }else
                {
                    sum = chineseNumeralsArray[9];
                }
                
                if ([[sums lastObject] isEqualToString:sum])
                {
                    continue;
                }
            }
            
            [sums addObject:sum];
        }
        NSString *sumStr = [sums  componentsJoinedByString:@""];
        NSString *chinese = [sumStr substringToIndex:sumStr.length-1];
        return chinese;
    }
}


沒錯芍锚,我就是分割線逝嚎。文章內容學習之互聯(lián)網(wǎng),僅作個人筆記之用

參考文章

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末炉菲,一起剝皮案震驚了整個濱河市堕战,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌颁督,老刑警劉巖践啄,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異沉御,居然都是意外死亡屿讽,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來伐谈,“玉大人烂完,你說我怎么就攤上這事∷锌茫” “怎么了抠蚣?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長履澳。 經(jīng)常有香客問我嘶窄,道長,這世上最難降的妖魔是什么距贷? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任柄冲,我火速辦了婚禮,結果婚禮上忠蝗,老公的妹妹穿的比我還像新娘现横。我一直安慰自己,他們只是感情好阁最,可當我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布戒祠。 她就那樣靜靜地躺著,像睡著了一般速种。 火紅的嫁衣襯著肌膚如雪姜盈。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天配阵,我揣著相機與錄音贩据,去河邊找鬼。 笑死闸餐,一個胖子當著我的面吹牛,可吹牛的內容都是我干的矾芙。 我是一名探鬼主播舍沙,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼剔宪!你這毒婦竟也來了拂铡?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤葱绒,失蹤者是張志新(化名)和其女友劉穎感帅,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體地淀,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡失球,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片实苞。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡豺撑,死狀恐怖,靈堂內的尸體忽然破棺而出黔牵,到底是詐尸還是另有隱情聪轿,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布猾浦,位于F島的核電站陆错,受9級特大地震影響,放射性物質發(fā)生泄漏金赦。R本人自食惡果不足惜音瓷,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望素邪。 院中可真熱鬧外莲,春花似錦、人聲如沸兔朦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽沽甥。三九已至声邦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間摆舟,已是汗流浹背亥曹。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留恨诱,地道東北人媳瞪。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像照宝,于是被迫代替她去往敵國和親蛇受。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內容