java实现数字金额转换成汉字大写金额

我们经常在做项目的财务报表,需要打印发票等情况时需要用到小写的财务金额要转换成汉字的大写金额,下面就是实现该功能的代码

import java.lang.Math;

/**
*通用型金钱转换类
*
*/
public class Money {
  private String HanDigiStr[] = new String[] { "零", "壹", "贰", "叁", "肆", "伍",
      "陆", "柒", "捌", "玖" };
  private String HanDiviStr[] = new String[] { "", "拾", "佰", "仟", "万", "拾",
      "佰", "仟", "亿", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰",
      "仟", "万", "拾", "佰", "仟" };
  /**
   * @param NumStr 输入字符串必须正整数,只允许前导空格(必须右对齐),不宜有前导零
   * @return
   */
  String PositiveIntegerToHanStr(String NumStr) {
    String RMBStr = "";
    boolean lastzero = false;
    boolean hasvalue = false; // 亿、万进位前有数值标记
    int len, n;
    len = NumStr.length();
    if (len > 15)
      return "数值过大!";
    for (int i = len - 1; i >= 0; i--) {
      if (NumStr.charAt(len - i - 1) == ‘ ‘)
        continue;
      n = NumStr.charAt(len - i - 1) - ‘0‘;
      if (n < 0 || n > 9)
        return "输入含非数字字符!";

if (n != 0) {
        if (lastzero)
          RMBStr += HanDigiStr[0]; // 若干零后若跟非零值,只显示一个零
        // 除了亿万前的零不带到后面
        // if( !( n==1 && (i%4)==1 && (lastzero || i==len-1) ) ) //
        // 如十进位前有零也不发壹音用此行
        if (!(n == 1 && (i % 4) == 1 && i == len - 1)) // 十进位处于第一位不发壹音
          RMBStr += HanDigiStr[n];
        RMBStr += HanDiviStr[i]; // 非零值后加进位,个位为空
        hasvalue = true; // 置万进位前有值标记

} else {
        if ((i % 8) == 0 || ((i % 8) == 4 && hasvalue)) // 亿万之间必须有非零值方显示万
          RMBStr += HanDiviStr[i]; // “亿”或“万”
      }
      if (i % 8 == 0)
        hasvalue = false; // 万进位前有值标记逢亿复位
      lastzero = (n == 0) && (i % 4 != 0);
    }

if (RMBStr.length() == 0)
      return HanDigiStr[0]; // 输入空字符或"0",返回"零"
    return RMBStr;

}

本人从事软件项目开发20年,10年的Java工程师系列课程的教学工作,录制30多门精品视频课程,每门课程都包含有项目实战,上课PPT,及完整的源代码下载,有兴趣的朋友可以看看我的在线课堂,如果想更详细全面的学习java课程,可以看看我的java从入门到精通+项目实训的视频课程:http://edu.51cto.com/course/6946.html

时间: 2024-08-24 12:54:42

java实现数字金额转换成汉字大写金额的相关文章

转一个财务方面常用到的数字金额转成汉字大写金额 php类

系统里有牵扯到财务.合同等方面的处理时,常常需要把数字金额转成汉字大写金额(貌似这样正规),转一个转换的php class吧!<?php// 诸海加(ALPHA .z)// 2000-7-19 class ChineseNumber{//var $basical=array(0=>"零","一","二","三","四","五","六","七&qu

PHP 数字金额转换成中文大写金额的函数 数字转中文

/** *数字金额转换成中文大写金额的函数 *String Int $num 要转换的小写数字或小写字符串 *return 大写字母 *小数位为两位 **/ function num_to_rmb($num){ $c1 = "零壹贰叁肆伍陆柒捌玖"; $c2 = "分角元拾佰仟万拾佰仟亿"; //精确到分后面就不要了,所以只留两个小数位 $num = round($num, 2); //将数字转化为整数 $num = $num * 100; if (strlen($

PHP算法--将数字金额转换成大写金额

最近在看一些PHP算法题,遇到一个将数字金额转换成大写金额的小算法题,这里贴出自己的一个例子. 注:这个小算法适用于10万以内的金额. <?php //$num = 12345.67; function RMB_Upper($num) { $num = round($num,2); //取两位小数 $num = ''.$num; //转换成数字 $arr = explode('.',$num); $str_left = $arr[0]; // 12345 $str_right = $arr[1]

在C#中将金额转换成中文大写金额

具体代码如下: /// <summary> /// 金额转换成中文大写金额 /// </summary> /// <param name="LowerMoney">eg:10.74</param> /// <returns></returns> public static string MoneyToUpper(string LowerMoney) { string functionReturnValue = nu

将数字金额转成汉字大写的

/** 数字金额大写转换(可以处理整数,小数,负数) */ function smalltoBIG(n) { var fraction = ['角', '分']; var digit = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']; var unit = [ ['元', '万', '亿'], ['', '拾', '佰', '仟'] ]; var head = n < 0? '欠': ''; n = Math.abs(n); var s =

java阿拉伯数字表示的金额转换成中文大写金额

最大数字要处理到千亿也就是12位整数部分我们可以分成3段处理,xxxx亿,xxxx万,xxxx元,然后小数部分比较好处理我们发现0比较难处理什么时候会出现零呢那就是两个数字之间出现一个或多个零那么数字可以分成两类,一类是零,一类是非零我们只需要统计两个非零数中间有多少个零没有零那就是没有,有就加上'零'(非零数用shu这个变量统计,零的数量用ling变量统计)对于十的读法,一种是十五,十六,另一种是一百一十五,一千零一十五我们只需要判断十前面有没有其他非零数字就能判断是'十'还是'一十'对于三段

PHP数字金额转换大写金额

早些年做CRM用到的一个金额转换函数,今天从旧项目中拿出来记录一下.金额转换的函数方法有很多,都很不错.不过这个是小崔刚工作的时候写的一个转换函数,多少还是有点纪念意义.如有问题请朋友们指出,小崔及时修正.谢谢啦! 废话不多说直接上代码: 1 <?php 2 3 /** 4 * 数字金额转换大写数字 5 * $num 数字类型 6 */ 7 8 function inttodaxie($num) { 9 //判断$num是否数字 10 if(!is_numeric($num)) return -

金额转换,阿拉伯数字的金额转换成中国传统输出。

1 package sfbc; 2 3 import java.text.DecimalFormat; 4 import java.util.HashMap; 5 import java.util.Map; 6 /** 7 * 金额转换,阿拉伯数字的金额转换成中国传统输出. 8 * @author trfizeng 9 * 10 */ 11 public class FormateMoneyCN { 12 // 阿拉伯数字对应的大写汉字 13 public static final Map<St

金额转换成大写

package com.liany.demo.translate; import java.math.BigDecimal; /** * @Description: 金额转换成大写 * @author huangzjb [email protected] * @Company Digital China * @date 2015-1-29 下午07:48:02 * @version 1.0 */ public class TransformMoney { /* 以下摘自百度百科:http://b