【OBJC】数字转中文大写

博客园都不知道怎么外链图片……

 

复制代码
- (void)numToString:(double)num{
    int iLen,iNum,iAddZero=0;
    NSMutableString *szChMoney = [[NSMutableString alloc] init];
    NSArray *hzUnit = @[@"",@"",@"",@"",@"",@"",@"",@"",@"",@"",@"",@"亿",@"",@"",@"",@"",@"",@"",@""];
    NSArray *hzNum = @[@"",@"",@"",@"",@"",@"",@"",@"",@"",@""];
    
    NSString *szNum = [NSString stringWithFormat:@"%18.0f",num*100];
    szNum = [szNum stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
    iLen = szNum.length;
    
    if ((iLen > 18) || (iLen == 0) || num == 0) {
        return;
    }
    for (int i = 0; i < iLen; i++) {
        iNum = [[szNum substringWithRange:NSMakeRange(i, 1)] intValue];
        if (iNum == 0) {
            iAddZero++;
        }
        else {
            if (iAddZero > 0) {
                [szChMoney appendString:@""];
            }
            [szChMoney appendString:hzNum[iNum]];
            iAddZero = 0;
        }
        if (iNum != 0                                       //数字不等于0 添加单位
            || iLen - i == 3                                //处理个位单位
            || iLen - i == 11                               //处理亿位单位
            || ((iLen - i + 1) % 8 == 0 && iAddZero < 4))   //处理万位单位
        {
            [szChMoney appendString:hzUnit[iLen-i-1]];
        }
    }
    if ([[szNum substringWithRange:NSMakeRange(iLen-2, 2)] isEqualToString:@"00"]) {
        [szChMoney appendString:@""];
    }
    NSLog(@"%@",szChMoney);
}
复制代码

 

posted @   qoakzmxncb  阅读(336)  评论(3编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示