java实现将数字转换成人民币大写_java

Rmb.java

public class Rmb
{
  /**
   *人民币的基本信息和操作
   *@author weinee
   *@version 1.0
  */
  double number;     //人民币的数量
  private String[] hanArr = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };//汉字计数符号
  private String[] unitArr = {"", "拾", "佰", "仟"};//汉字计数单位
  private String[] unitArrs = {"万", "亿", "万", "兆", "万", "亿", "万", "圆"}; //顺序添加单位
  //private String[] unitsArr = {"万", "亿"}; //汉字计数大单位
  public Rmb(){}
  /**
   *构造器初始化人民币数量
   *@param 给定的初始化人民币数
  */
  public Rmb(double number){
    this.number = number;
  }

  /**
   *把一个浮点数分解成long型部分和小数部分字符串,把人民币换成了整数,浮点数在取小数部分时临界值有误差
   *@return 返回分解后的字符串数组,第一个数组元素是整数部分,第二个是小数部分字符串
  */
  public String[] divideNum(){
    double num = Math.round(number*100);//对number进行四舍五入取整
    long integerPart = (long)num; //连同小数点后两位取成整数 ,避免使用减法
    //double decimalsPart = num-integerPart;//小数部分,临界时产生了误差
    String decimalsPartStr;
    long b = integerPart % 10; //小数点后第二位
    long a = (integerPart/10) % 10;//小数点后第一位
    integerPart /= 100;
    if(a==0 && b==0){
      decimalsPartStr = null;
    }else{
      decimalsPartStr = "" + a + b;
    }
    return new String[] {String.valueOf(integerPart) , decimalsPartStr};
  }

  /**
   *把一个数字字符转换成汉语的人民币读法
   *@return 返回汉语人民币读法的字符串形式
  */
  public String toHanStr(){
    String[] results = new String[9]; //用来暂时存储每四位分段后的数字字符串
    String[] resultStrs = new String[9];//用来暂时存储每四位分段后转换成的人民币读法
    String result = "";//最终的转换结果
    String[] divideStr = divideNum(); //得到浮点数分解成的long型部分和小数部分字符串,第一个数组元素是整数部分字符串,第二个是小数部分字符串
    results[8] = divideStr[1];
    for (int i=divideStr[0].length(), j=8; i>0&&j>0 ; i-=4,j--){
      try{
        results[j-1] = divideStr[0].substring(i-4, i);
      }catch(Exception e){
        results[j-1] = divideStr[0].substring(0, i);
        break;
      }
    }
    if(results[8] == null){
      resultStrs[8] = "整";
    }else if(results[8].charAt(1) == '0'){
      resultStrs[8] = hanArr[results[8].charAt(0) - 48] + "角"; //根据ASCII码和hanArr数组吧数字改成汉语大写
    }else{
      resultStrs[8] = hanArr[results[8].charAt(0) - 48] + "角" + hanArr[results[8].charAt(1) - 48] + "分";
    }
    for(int i=0; i<8; i++){
      if(results[i] != null){
        resultStrs[i] = "";
        resultStrs[i] += hanArr[results[i].charAt(0) - 48] + unitArr[results[i].length() - 1]; //根据ASCII码和数组长度选择数的单位
        for (int j=1; j<results[i].length(); j++ )
          if(results[i].charAt(j-1) == '0' && results[i].charAt(j) != '0')
            resultStrs[i] += "零" + hanArr[results[i].charAt(j) - 48] + unitArr[results[i].length() - 1 - j];  //根据ASCII码和数组长度选择数的单位
          else if(results[i].charAt(j) != '0' )
            resultStrs[i] += hanArr[results[i].charAt(j) - 48] + unitArr[results[i].length() - 1 - j];
      }
    }
    for (int i=0; i<8; i++ ){
      if(resultStrs[i] != null){
        result += resultStrs[i] + unitArrs[i];
      }
    }
    result += resultStrs[8];
    return result;
  }
}

RmbTest.java

public class RmbTest
{
  public static void main(String[] args)
  {
    double l;
    byte[] bye = new byte[50];
    System.out.println("请输入要转换的人民币数量:");
    try{
      System.in.read(bye);
    }catch(Exception e){}
    String s = new String(bye);
    l = Double.parseDouble(s);
    Rmb r = new Rmb(l);
    s = r.toHanStr();
    System.out.println(s);

  }
}

以上所述就是本文的全部内容了,希望对大家学习java能够有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
java人民币大小写转换、java实现大小写转换、人民币大写转换、人民币大小写转换、人民币大写转换器,以便于您获取更多的相关知识。

时间: 2024-10-02 14:27:07

java实现将数字转换成人民币大写_java的相关文章

正则一则 将金额转换成人民币大写的代码_实用技巧

复制代码 代码如下: public static string ConvertToChineseMoney(double money) { if (money < 0) throw new ArgumentOutOfRangeException("参数money不能为负值!"); string s = money.ToString("#L#E#D#C#K#E#D#C#J#E#D#C#I#E#D#C#H#E#D#C#G#E#D#C#F#E#D#C#.0B0A")

java递归菜单树转换成pojo对象_java

复制代码 代码如下:   package com.cjonline.foundation.authority.pojo;import java.util.ArrayList;import java.util.Collections;import java.util.Iterator;import java.util.List;import org.apache.log4j.Logger;import com.cjonline.foundation.util.CheckNullEmpty;/** 

javascript-JavaScript 时间数字如何转换成中文大写

问题描述 JavaScript 时间数字如何转换成中文大写 例如, 把2012年12月31日转换成二〇一二年十二月三十一日.在线等! 急急急!!!!! 解决方案 function numToCN(s) { var sCN = '〇一二三四五六七八九'; function getCN(s) { var c = s.charAt(0) cCN = sCN.charAt(c); return s.length == 1 ? cCN : (c == '1' ? '' : cCN) + '十' + sCN

SQL SERVER函数将人民币数字转换成大写形式

  SQL SERVER函数将人民币数字转换成大写形式 CREATE FUNCTION [dbo].[f_num_chn] (@num numeric(14,5)) RETURNS varchar(100) WITH ENCRYPTION AS BEGIN DECLARE @n_data VARCHAR(20),@c_data VARCHAR(100),@n_str VARCHAR(10),@i int SET @n_data=RIGHT(SPACE(14)+CAST(CAST(ABS(@num

将数字转换成大写的人民币表达式的js函数

  将数字转换成大写的人民币,方法有很多,本例介绍的是使用js来完成的,看看下面的实现代码 function changeNumMoneyToChinese(money) { var cnNums = new Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖&q

将数字转换成大写的人民币表达式的js函数_javascript技巧

将数字转换成大写的人民币,方法有很多,本例介绍的是使用js来完成的,看看下面的实现代码 function changeNumMoneyToChinese(money) { var cnNums = new Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖&quo

Java中实现数字金额到中文大写字符的转换!!

最近用到了数值转成大写人民币的功能,在网上找了一下只有C++版的,好容易找到一个Java版的竟然收费!!没办法就自己弄一个出来,想必用到该功能的人肯定少,就拿出来与大家共享!! /**  * <p>Title: money</p>  * <p>Description:   *   *该类是把阿拉伯数字转换成中文大写的类.根据王大庆兄的C++程序稍做修改而成,后面附有王大庆兄的C++  *   *程序,如果对所附的C++程序有什么问题请与王大庆兄联系email: wang

Excel中数字如何自动转换成中文大写数字

平时工作中输入金额时常常需要转成中文大写数字,但输入起来比较麻烦,那么是否可以将数字直接转换成中文大写呢?本教程中就为大家介绍在excel中如何将数字自动转换成中文大写数字. 第一步:打开Excel工作表,鼠标右键单击选中需要显示中文大写数字的单元格(可以批量拉选单元格),在弹出的快捷菜单中选择"设置单元格格式". 第二步:在弹出的对话框中选择"数字"选项卡,并且在"分类"列表中选择"特殊",在类型框中选择"中文大写

JavaScript将数字转换成大写中文的方法

 这篇文章主要介绍了JavaScript将数字转换成大写中文的方法,涉及javascript字符串及匹配的技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了JavaScript将数字转换成大写中文的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 function intToChinese ( str ) { str