java实现整数转化为中文大写金额的方法_mssql2008

在日常生活中,我们经常会将阿拉伯数字转化为中文大写的情况:"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖", "拾", "佰", "仟", "万", "亿",因此自己就编写一个类,实现该功能的转化。
实现过程:
对于这个问题的实现,我们首先把数字按四位一个拆开(符合我们读数字的习惯),然后对这四位数,做出他的读法,具体代码如下:

private static String getNumberStr1000 (int num) {
 if (num > 9999 || num < 0) {
  return "";
 }
 int q = num / 1000;
 int b = (num / 100) % 10;
 int s = (num / 10) % 10;
 int g = num % 10;
 StringBuffer sb = new StringBuffer();
 //千
 if (q > 0) {
  sb.append(NUMBER1[q]);
  sb.append(NUMBER2[3]);
 }
 //百
 if (b > 0) {
  sb.append(NUMBER1[b]);
  sb.append(NUMBER2[2]);
 } else {
  if (q != 0) {
   sb.append(NUMBER2[0]);
  }
 }
 //十
 if (s > 0) {
  sb.append(NUMBER1[s]);
  sb.append(NUMBER2[1]);
 } else {
  if (b != 0) {
   sb.append(NUMBER2[0]);
  }
 }
 //个
 if (g > 0) {
  sb.append(NUMBER1[g]);
 }
 return sb.toString();
}

下面我们只需要在编写一个方法,实现每个四位数的读法以及对应的单位即可,具体代码如下:

public static String getNumberStr(int num) {
 if (num < 0) {
  return "";
 }
 if (num == 0) {
  return NUMBER1[0];
 }
 int split = 10000;
 int y = num / (split * split);
 int w = (num / split) % split;
 int g = num % split;
 StringBuffer sb = new StringBuffer();
 //亿
 if (y > 0) {
  sb.append(getNumberStr1000(y));
  sb.append(NUMBER2[5]);
 }
 //万
 if (w > 999) {
  sb.append(getNumberStr1000(w));
  sb.append(NUMBER2[4]);
 } else {
  if (w > 0) {
   if (y != 0) {
    sb.append(NUMBER2[0]);
   }
   sb.append(getNumberStr1000(w));
   sb.append(NUMBER2[4]);
  }
 }
 //万以下
 if (g > 0) {
  if (w != 0) {
   if (g > 999) {
    sb.append(getNumberStr1000(g));
   } else {
    sb.append(NUMBER2[0]);
    sb.append(getNumberStr1000(g));
   } 

  } else {
   if (y != 0) {
    sb.append(NUMBER2[0]);
   }
   sb.append(getNumberStr1000(g));
  }
 }
 return sb.toString();
}

完整源代码:

 /**
 *@Description:
 */
package com.lulei.util; 

public class NumberUtil {
 private static String[] NUMBER1 = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
 private static String[] NUMBER2 = {"零", "拾", "佰", "仟", "万", "亿"}; 

 /**
  * @param num
  * @return
  * @Author:lulei
  * @Description:将数字转化为大写
  */
 public static String getNumberStr(int num) {
  if (num < 0) {
   return "";
  }
  if (num == 0) {
   return NUMBER1[0];
  }
  int split = 10000;
  int y = num / (split * split);
  int w = (num / split) % split;
  int g = num % split;
  StringBuffer sb = new StringBuffer();
  //亿
  if (y > 0) {
   sb.append(getNumberStr1000(y));
   sb.append(NUMBER2[5]);
  }
  //万
  if (w > 999) {
   sb.append(getNumberStr1000(w));
   sb.append(NUMBER2[4]);
  } else {
   if (w > 0) {
    if (y != 0) {
     sb.append(NUMBER2[0]);
    }
    sb.append(getNumberStr1000(w));
    sb.append(NUMBER2[4]);
   }
  }
  //万以下
  if (g > 0) {
   if (w != 0) {
    if (g > 999) {
     sb.append(getNumberStr1000(g));
    } else {
     sb.append(NUMBER2[0]);
     sb.append(getNumberStr1000(g));
    } 

   } else {
    if (y != 0) {
     sb.append(NUMBER2[0]);
    }
    sb.append(getNumberStr1000(g));
   }
  }
  return sb.toString();
 } 

 /**
  * @param num
  * @return
  * @Description:对万以下的数字进行大小写转化
  */
 private static String getNumberStr1000 (int num) {
  if (num > 9999 || num < 0) {
   return "";
  }
  int q = num / 1000;
  int b = (num / 100) % 10;
  int s = (num / 10) % 10;
  int g = num % 10;
  StringBuffer sb = new StringBuffer();
  //千
  if (q > 0) {
   sb.append(NUMBER1[q]);
   sb.append(NUMBER2[3]);
  }
  //百
  if (b > 0) {
   sb.append(NUMBER1[b]);
   sb.append(NUMBER2[2]);
  } else {
   if (q != 0) {
    sb.append(NUMBER2[0]);
   }
  }
  //十
  if (s > 0) {
   sb.append(NUMBER1[s]);
   sb.append(NUMBER2[1]);
  } else {
   if (b != 0) {
    sb.append(NUMBER2[0]);
   }
  }
  //个
  if (g > 0) {
   sb.append(NUMBER1[g]);
  }
  return sb.toString();
 } 

 public static void main(String[] args) {
  // TODO Auto-generated method stub
  int i = 1;
  System.out.println(i + "--" + NumberUtil.getNumberStr(i));
  i = 1001;
  System.out.println(i + "--" + NumberUtil.getNumberStr(i));
  i = 100101;
  System.out.println(i + "--" + NumberUtil.getNumberStr(i));
  i = 10100101;
  System.out.println(i + "--" + NumberUtil.getNumberStr(i));
  i = 1234567890;
  System.out.println(i + "--" + NumberUtil.getNumberStr(i));
 } 

}

 测试运行结果:

希望本文所述对大家学习java程序设计有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
, 整数
大写
金额大小写转化、大写金额转化、数字转化成大写金额、数字金额大写转化公式、报销单整数写大写金额,以便于您获取更多的相关知识。

时间: 2024-10-01 11:05:55

java实现整数转化为中文大写金额的方法_mssql2008的相关文章

Java Web开发项目中中文乱码解决方法汇总_java

Java Web项目中,解决中文乱码方法总结如下 第一种情况:调用jsp页面中文显示乱码问题描述:通过浏览器调用jsp页面,在浏览器中显示的中文内容出现乱码. 解决方法:首先确认本jsp在编辑器中保存文件内容时,使用的是utf-8的编码格式,然后在jsp页面的开始处添加<%@ pageEncoding="utf-8"%>就可以解决这种中文乱码问题 第二种情况:调用servlet页面显示乱码问题描述:通过浏览器调用servlet,servlet在浏览器中显示的内容出现乱码.

JAVA URL和URLConnection及中文乱码解决方法

 也不多说什么了,就拿urlconnection类举个例子吧,做一个获取网站源码的代码 public class urldemo {  public static void main(string[] args) {   scanner scan = new scanner(system.in);            system.out.println("请输入网址:");   string urlstr ="http://"+scan.next();   tr

JavaScript 动态将数字金额转化为中文大写金额_javascript技巧

复制代码 代码如下: function convertCurrency(currencyDigits) { // Constants: var MAXIMUM_NUMBER = 99999999999.99; // Predefine the radix characters and currency symbols for output: var CN_ZERO = "零"; var CN_ONE = "壹"; var CN_TWO = "贰"

java中Filter过滤器处理中文乱码的方法_java

注意问题:在学习用selvert的过滤器filter处理中文乱码时,在filter配置初始化时用了utf-8处理中文乱码,而在提交的jsp页面中却用了gbk.虽然两种都可以出来中文乱码,但是却造成了处理乱码的格式不一致.所以编译出错. 解决方法:所有地方都用utf-8或gbk 复制代码 代码如下: //过滤器类CharactorFilter.jsppackage cn.com.Filter; import java.io.IOException; import javax.servlet.Fil

php将金额数字转化为中文大写_php技巧

php将金额数字转化为中文大写 echo toChineseNumber(1234567890);//壹拾贰亿叁仟肆佰伍拾陆万柒仟捌佰玖拾圆 function toChineseNumber($money){ $money = round($money,2); $cnynums = array("零","壹","贰","叁","肆","伍","陆","柒&q

C#实现的【阿拉伯数字转换成中文大写金额】代码

大写|金额|中文|转换 以下C#代码实现了将阿拉伯数字转换成中文大写金额的功能,并Visual Studio.NET 2003 下调试基本通过(未经严格测试,希望各位发现错误后与作者联系fanz2000@sohu.com,或直接在csdn上回帖告知). 代码的主调函数为ConvertSum,它的参数是string类型的数字字符串.在ASP.NET中调用方式如下:Label1.Text=ConvertSum("数字字符串"); 其代码如下: //作者:fanz2000 //Email:f

实现xml信息到Java Bean的转化

xml 本文主要是关于使用commons-betwixt组件实现xml信息到Java Bean的转化的一些感受,实现这一功能的核心类是BeanReader,如果你看过betwixt的源代码,你会发现 public class BeanReader extends Digester{}       如果你细看一下BeanReader的源代码,betwixt在处理xml-->JavaBean转化时其实是调用Digester这个类的parse方法.但除了此方式可以实现转化的功能以外,BeanReade

中文字符串显示乱码-java前端jquery接接收中文字符串乱码问题

问题描述 java前端jquery接接收中文字符串乱码问题 服务端:@RequestMapping(value="/detail/modSelect", method = {RequestMethod.POST}) public @ResponseBody String mod(@RequestBody String reqParam){ //修改请求处理 System.out.println("修改请求发送到此"); System.out.println(reqP

double-钱数转化成中文汉字,带小数的

问题描述 钱数转化成中文汉字,带小数的 写一个程序,能将人民币金额从阿拉伯数字转换为大写汉字表示. 例如,把1234.56转换为壹仟贰佰叁拾肆圆零伍角陆分