【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);
}

【OBJC】数字转中文大写

时间: 2024-10-24 17:36:10

【OBJC】数字转中文大写的相关文章

数字转中文,大写,金额

最近,又发现了另外一种数字转中文,大写,金额的方法,觉得会比之前找到的跟合适一点:npm安装包地址:https://npm.taobao.org/package/nzh(在这里,会有更加详细的使用介绍.而我就只是测了其中一种......) 简介:Nzh适用于开发过程中需要将数字转换为中文的场景 以字符串的方式转换,解决超大数及浮点数等问题,请自行对原数据进行四舍五入等操作. 1.首先在项目中安装依赖包:npm install nzh 2.其实这是自己在做小测试的时候,使用nzh的,在安装完依赖包

Lua-阿拉伯数字转中文大写数字

function numberToString(szNum) ---阿拉伯数字转中文大写 local szChMoney = "" local iLen = 0 local iNum = 0 local iAddZero = 0 local hzUnit = {"", "十", "百", "千", "万", "十", "百", "千&qu

XtraReport报表入库单数字转中文大写数字

先看看打印入库单的效果图,看如下: 客户要求合计一行,要求大写中文数字.XtraReport报表是如何做出以上图的效果呢?因为是要把数字转成大写中文数字,得先准备数字转大写中文数字的函数.因网上有很多方法,我这里就不上传代码了.这里只说一下XtraReport报表创建以上收货单报表大写数字操作.新建一个XtraReport报表,设置好收货单报表格式.使用的是运行时绑定数据,以下是源码: 1 public EnterStockRpt(DataSet ds) 2 { 3 InitializeComp

SSRS 实现数字金额转换为中文大写汉字

比如: 金额=49,701,120.00,将其转换为"肆仟玖佰柒拾万壹仟壹佰贰拾元整":金额 289,546.52 ,转换为 "贰拾捌万玖仟伍佰肆拾陆元伍角贰分". 解决方法:添加VB的转换函数写在CODE里,然后在表达式里调用自定义函数转换. 如:增加两个占位符表达式,如小数位为0时表达式2添加"整", 表达式1=Code.GetCnString(Fields!Amount.Value) 表达式2=IIF(Fields!Amount.Value

JS判断是否为数字,中文,小写、大写字母

/**  取得字符串的字节长度**/ 代码function strlen(str)   {      var i;      var len;            len = 0;      for (i=0;i<str.length;i++)      {          if (str.charCodeAt(i)>255) len+=2; else len++;      }      return len;   } /* * 判断是否为数字,是则返回true,否则返回false */

日期转换为中文大写数字

动手写一个转换日期的小方法,虽然很短,但是需要考虑的东西还是挺多的,记录一下. /// <summary> /// 将日期转换为中文大写 /// 如:一九八三 十一 二十七 /// </summary> public class ChineseNumberHelper { static Dictionary<int, string> _theNumOfChineseCapital = new Dictionary<int, string>() { {0,&q

人民币数值转中文大写

class Num2RmbClass{ /** * 人民币数值转中文大写 * @author SunsCheung * @time 2015.11.11 * @param string $number 数值 默认为0 * @param string $int_unit 币种单位,默认"元",有的需求可能为"圆" * @param bool $is_round 是否对小数进行四舍五入 * @param bool $is_extra_zero 是否对整数部分以0结尾,小

金额小写转中文大写类

using System; using System.Collections.Generic; using System.Text; namespace Class_ZhH { /// <summary> /// 金额小写转中文大写类(附带一个数字转大写). /// 整数支持到万亿:小数部分支持到分(超过两位将进行Banker舍入法处理) /// </summary> public class NumGetString { private static String[] Ls_Sh

金额阿拉伯数字转换为中文大写

最近的做项目中需要弄一个金额是阿拉伯数字转为中文大写的金额,自己偷懒了,就总结一下. 第一种方法相对复杂 private static readonly String cnNumber = "零壹贰叁肆伍陆柒捌玖"; private static readonly String cnUnit = "分角元拾佰仟万拾佰仟亿拾佰仟兆拾佰仟"; 1 public static String GetCnString(String MoneyString) //传入数字 2