`

货币数字转成大写

阅读更多
public class money{
//调试时用main函数
public static void main(String args[]){
  money mon = new money();
  System.out.println(-99999999999999.999+mon.NumToRMBStr(-99999999999999.999));
  System.out.println(99999999999999.999+mon.NumToRMBStr(99999999999999.999));
  System.out.println(mon.NumToRMBStr(105.30));
  System.out.println(mon.NumToRMBStr(100000001.00));
}

String HanDiGIStr[] = new String[]{"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};

String HanDiviStr[] = new String[]{"","拾","佰","仟","万","拾","佰","仟","亿",
     "拾","佰","仟","万","拾","佰","仟","亿",
     "拾","佰","仟","万","拾","佰","仟" };
    

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

String NumToRMBStr(double val)
{
  String SignStr ="" ;
  String TailStr ="";
  long  fraction, integer;
  int jiao,fen;

  if( val<0 ) {
   val = -val;
   SignStr = "负";
   }
  if(val > 99999999999999.999 || val <-99999999999999.999 ) return "数值位数过大!";
  // 四舍五入到分 
  long temp = Math.round(val*100);
  integer = temp/100;
  fraction = temp%100;
  jiao = (int)fraction/10;
  fen = (int)fraction%10;
  if( jiao==0 && fen==0 ) {
   TailStr = "整";
   }
  else {
   TailStr = HanDiGIStr[jiao];
   if( jiao!=0 )
    TailStr += "角";
   if( integer==0 && jiao==0 )                // 零元后不写零几分
    TailStr = "";
   if( fen!=0 )
    TailStr += HanDiGIStr[fen] + "分";
   }

// 下一行可用于非正规金融场合,0.03只显示“叁分”而不是“零元叁分”
//        if( !integer ) return  SignStr+TailStr;

  return "¥"+SignStr+PositiveIntegerToHanStr(String.valueOf(integer) )+"元"+TailStr;
}

}//END public class money
分享到:
评论

相关推荐

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

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

    数字转大写货币函数

    本篇文章将详细探讨如何实现一个数字转大写货币的函数,涵盖相关知识点。 首先,我们要明白数字转大写货币的基本规则。在中文环境下,大写数字通常用于正式的财务报表和法律文件,以避免因手写数字导致的混淆。大写...

    水晶报表数字金额转中文大写

    水晶报表数字金额转中文大写,用于水晶报表中将数字金额转换为中文大写的金额

    mysql函数,将数字金额转成人民币大写

    在MySQL数据库中,有时我们需要将数字金额转换成人民币的大写形式,这在财务报表或会计系统中非常常见。为了实现这一需求,我们可以自定义一个函数或者利用现有的字符串处理函数。以下是一个关于如何在MySQL中实现这...

    as3 货币、数字转大写

    货币、数字转大写,可转换数字、和货币,选择转换。货币可至角分毫里;

    数字转换为大写(JAVA)

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

    数字转成人民币大写代码

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

    罗马数字直接转换成中文大写人民币数字

    中文大写人民币数字则是中国特有的货币表示方式,用于明确金额并防止篡改。它包括以下汉字:壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿。例如,1000元用中文大写表示为“壹仟元整”。 实现罗马数字到...

    价格数字转换为大写汉字

    这个程序的主要目的是将输入的价格数字转换为大写的汉字形式,以符合中国传统的货币表示习惯。在中文环境下,大写汉字用于增加金额的可读性和防止篡改。 `CnumToHan` 类是实现这一功能的核心。类通常在面向对象编程...

    数字转换中文大写

    在IT行业中,尤其是在编程领域,将数字转换成中文大写是一项常见的需求,特别是在财务报表、会计软件或银行系统中。这种转换有助于确保数据的准确性和符合中国的财务规范,因为中文大写数字可以防止数字被篡改,增加...

    阿拉伯数字转换成英文和大写

    "阿拉伯数字转换成英文和大写"可能是一个示例文件或者测试用例,用于验证程序的正确性。 理解并实现这样的功能,不仅可以帮助我们处理特定的数据格式化任务,也能加深对数据处理、文件操作和字符串转换等编程概念的...

    double型数字转换成大写数字

    在C++编程中,将`double`型数字转换为大写数字是一项常见的需求,尤其是在处理财务、会计等领域的数据时。通常,我们所说的"大写数字"是指将阿拉伯数字(0-9)转换为其对应的汉字表示,例如1对应于'壹',2对应于'贰'...

    金额阿拉伯小写数字转换成大写

    在IT行业中,尤其是在财务软件开发或者处理金融数据时,经常需要将阿拉伯数字(小写)转换为汉字大写,这是因为汉字大写数字在中国的金融交易中是标准的表示方式,可以有效防止因为数字混淆而引起的错误。...

    python实现人民币大写转换

    本文实例为大家分享了python实现人民币大写转换的具体代码,供大家参考,具体内容如下 #!/usr/bin/python # -*- coding:utf-8 -*- # ********* 转换方法介绍 ********* # 将需要转换的数字从右向左,每4位分成一个...

    输入数字转换为大写金额输出

    在财务系统、银行交易以及其他需要处理货币的场合中,经常会遇到将数字转换成大写金额的需求。例如,在开具支票时,需要将数字金额转换成大写形式,以避免被篡改。这种转换在计算机编程中是一个常见的需求。 #### ...

    FastReport小写金额转大写

    在财务文档或正式报告中,将数字金额转换成大写格式是一种常见的规范要求,尤其在中国。FastReport提供了一种方法,通过编写自定义函数来实现这一转换。本例中的代码展示了一个具体的实现过程,用于将货币类型的数值...

    数字转大写实例 人民币转大写实例

    综上所述,"数字转大写实例 人民币转大写实例"涉及到的是编程中处理数字和货币格式化的问题,尤其是中文环境下对数字和货币单位的正确转换,这在财务系统和相关应用开发中是必不可少的知识点。通过理解和掌握这些...

    java钱币小写转换大写

    - 初始化一个大写数字字符数组,对应0-9的小写数字。 - 使用循环遍历整数部分,从后往前,每次取出一位,根据对应的数字找到大写字符。 - 对于每一位,如果为0,则需要判断前一位是否也为0,如果是,则需要插入...

    ios-数字金额转大写金额.zip

    这个"ios-数字金额转大写金额.zip"压缩包可能包含一个示例项目,名为"Demo",用于演示如何实现这个功能。在这个场景中,用户输入数字金额后,系统会自动将其转换为大写的汉字表示,比如"壹仟贰佰叁拾肆元伍角陆分"。...

    数字转汉字大写

    在实现数字到汉字大写的转换时,一般会遵循这样的规则:从右至左,将数字按“元”、“角”、“分”等货币单位进行分割,并转换为对应的汉字。需要注意的是,有些数字和单位会有特殊情况,比如“0”的处理,以及“20...

Global site tag (gtag.js) - Google Analytics