`
shihuan830619
  • 浏览: 583823 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java中数字转大写货币(支持到千亿)

阅读更多
public class MoneyToOther {
	/**
	 * 支持到千亿,超过千亿就报错了
	 * */
	public static String changeToBig(double value){
		char [] hunit = {'拾', '佰', '仟'};     //段内位置表示 
        char [] vunit = {'万', '亿'};     //段名表示 
        char [] digit = {'零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'}; //数字表示 
        long midVal = (long)(value * 100);     //转化成整形 
        String valStr = String.valueOf(midVal);  //转化成字符串 
        String head = valStr.substring(0, valStr.length() - 2);  //取整数部分 
        String rail = valStr.substring(valStr.length() - 2);  //取小数部分 

        String prefix = "" ;        //整数部分转化的结果 
        String suffix = "" ;       //小数部分转化的结果
        //处理小数点后面的数 
        if(rail.equals("00")){     //如果小数部分为0 
        	suffix = "整";
        }else{
        	suffix = digit[rail.charAt( 0 ) - '0'] + "角" + digit[rail.charAt(1) - '0'] + "分" ;  //否则把角分转化出来 
        }
        //处理小数点前面的数 
        char [] chDig = head.toCharArray();     //把整数部分转化成字符数组 
        char zero = '0';           //标志'0'表示出现过0 
        byte zeroSerNum = 0;      //连续出现0的次数 
        for(int i = 0; i <chDig.length; i++){     //循环处理每个数字 
        	int idx = (chDig.length - i - 1) % 4 ;    //取段内位置 
        	int vidx = (chDig.length - i - 1) / 4 ;   //取段位置 
        	if (chDig[i] == '0'){                //如果当前字符是0 
        		zeroSerNum ++ ;             //连续0次数递增 
        		if (zero == '0'){           //标志 
        			zero = digit[0];
        		} else if (idx == 0 && vidx > 0 && zeroSerNum < 4){
        			prefix += vunit[vidx - 1];
        			zero = '0';
        		}
        		continue;
        	}
        	zeroSerNum = 0;       //连续0次数清零 
        	if (zero != '0') {    //如果标志不为0,则加上,例如万,亿什么的 
        		prefix += zero;
        		zero = '0';
        	}
        	prefix += digit[chDig[i] - '0'];      //转化该数字表示 
        	if (idx > 0) prefix += hunit[idx - 1];                  
        	if (idx == 0 && vidx > 0){
        		prefix += vunit[vidx - 1];  //段结束位置应该加上段名如万,亿 
        	}
        }

        if (prefix.length() > 0) prefix += '元'; //如果整数部分存在,则有元的字样 
        return prefix + suffix;    //返回正确表示 
     } 

	
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		String tmp = changeToBig(976662340912.23);
		System.out.println(tmp);
		tmp = changeToBig(2071234.00);
		System.out.println(tmp);
		tmp = changeToBig(100234.00);
		System.out.println(tmp);
		tmp = changeToBig(100000.00);
		System.out.println(tmp);
		tmp = changeToBig(10000000.00);
		System.out.println(tmp);
	}
分享到:
评论

相关推荐

    java钱币小写转换大写

    在Java编程中,将钱币小写金额转换为大写金额是一项常见的需求,特别是在财务系统或者电商平台上,为了符合规范和避免误解,金额通常会以大写形式展示。本知识点主要探讨如何利用Java实现这一功能。 首先,我们需要...

    Java人民币金额数字转换成大写

    Java 人民币金额数字转换成大写是 Java 面试中最常见的问题之一。本文将详细介绍如何使用 Java 实现人民币金额数字转换成大写的解决方案。 Java 中的 NumberFormat 类 在 Java 中,NumberFormat 类是用于格式化...

    数字转换为大写(JAVA)

    在Java编程中,将数字转换成大写是常见的需求,特别是在处理财务或会计相关的应用时。这个题目描述了一个简单的Java程序设计实验,其目的是将输入的浮点数值转换成中文金额的大写形式。以下是该实验涉及的主要知识点...

    数字转成人民币大写代码

    这段代码是用于将数字转换为中文大写的人民币表示方式,主要应用于财务软件或者与货币相关的程序中,方便在中文环境中准确地表示金额。这个函数名为`GetChinaNum`,接收4个参数:`otherNum`、`isRMB`、`numOption`和...

    基于java的人民币大写的转换

    总结来说,`基于java的人民币大写的转换`是一个涉及到字符串处理、数字逻辑和汉字映射的编程任务,`DaXie.java`文件应该包含了实现这一功能的具体代码。通过学习和理解这段代码,开发者可以更好地掌握Java中的字符串...

    使用java将人民币金额转换成大写并使用自定义标签显示到页面

    `ChangeNumMoney.java`很可能包含一个类,用于处理数字到中文大写的转换。这种转换通常涉及以下几个步骤: 1. 数字到字符串:将数值转换为字符串,便于后续处理。 2. 分段处理:人民币金额通常由个位、十位、百位、...

    java 数字转化为汉字大写

    在给定的压缩包中,`Java数字换成汉字大写`应该就是实现了以上逻辑的Java类。通过直接运行和测试这个类,我们可以快速检查其功能是否符合预期。这个类可能包含了一些特殊处理,比如处理0的情况、保留的小数位数限制...

    java实现数字转大写的方法

    Java 实现数字转大写的方法主要是为了在处理财务或会计相关的程序时,将数字金额转换成汉字大写形式,这是为了防止因为数字篡改而引起的财务错误。在中文环境中,大写的数字通常用于正式的财务报表和凭证,以增强其...

    转换成中文大写金额

    在IT行业中,尤其是在财务软件开发或者金融系统的编程中,将数字金额转换为中文大写是一种常见的需求。这有助于避免因数字书写错误导致的财务纠纷,因为中文大写的金额更不容易被篡改。在这个场景中,"MoneyFormat" ...

    java写的货币转换

    在这个特定的场景中,我们关注的是如何使用Java来实现货币转换的功能,特别是将数字转化为大写汉字,这是财务和会计领域中常见的需求,以确保金额的清晰性和准确性。 货币转换涉及到的主要知识点包括: 1. **数字...

    Rmb.rar_人民币 转换 java_人民币大写

    4. **千位和万位及以上**:对于千位以上的数字,需要用到更大的汉字单位,如“千”、“万”、“亿”。这些单位的使用需要考虑到数字大小,并且可能需要在某些位上插入“零”来保持正确的货币格式。 5. **整数部分和...

    将用罗马数字表示的金额转化为中文大写表示

    3. **中文大写数字**:阿拉伯数字到中文大写数字的转换,需要创建一个映射表,存储0-9对应的中文大写数字,以及"元"、"角"、"分"等货币单位。然后根据阿拉伯数字逐位进行转换,同时考虑零的特殊表示,如"零"。 4. *...

    java数字转汉字工具类详解

    Java数字转汉字工具类是指将数字转换为汉语中人民币的大写的工具类。该工具类主要用于处理金额的转换,提供了一种将数字转换为汉语中人民币的大写的解决方案。 在Java数字转汉字工具类中,使用了两个数组:...

    js金额小写转大写脚本

    "js金额小写转大写脚本"指的是JavaScript编程语言中用于将小写的货币金额(阿拉伯数字)转换为大写的汉字数字的代码片段。这样的脚本有助于提高财务报表的可读性和规范性,因为在中国,正式的财务文档通常要求金额以...

    人民币金额小写转换大写

    在IT行业中,尤其是在财务软件开发或者处理金融数据时,经常需要将人民币金额的小写形式转换为大写形式,因为在中国,大写数字常用于正式的财务文档,如支票、合同等,以防止篡改。这个任务涉及到字符串处理、字符...

    jsp页面人民币小写转大写

    在处理金融数据时,为了保证准确性和规范性,通常会将金额从小写的阿拉伯数字转换为大写的汉字数字,这在财务报表、发票等正式文档中尤其常见。在JSP(JavaServer Pages)页面中实现这个功能,我们可以利用Java编程...

    人民币小写转大写的程序.rar

    在金融行业,特别是在财务系统中,处理货币数字时,经常需要将小写的金额转换为大写的汉字形式,以避免因数字混淆而引发的错误。"人民币小写转大写的程序"就是一个这样的解决方案,用于将诸如“123456.78”这样的...

    java 大小写转换

    根据提供的文件信息,可以看出这是一个Java程序,用于将数字转换为特定的大写形式(可能是货币或数值的中文大写形式)。由于代码中存在不少乱码字符和逻辑上的问题,以下将尝试解析并归纳出该程序的主要功能及实现...

    Money And Date toChinese Java

    在Java编程语言中,将数字、日期或者货币转换为中文大写是常见的需求,尤其是在财务报表、发票等正式文档中。"Money and Date to Chinese Java"项目正专注于解决这一问题,提供了一种高效且准确的方法来实现这个功能...

Global site tag (gtag.js) - Google Analytics