`
javatim
  • 浏览: 69362 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JAVA金钱数额转大写老体[转]

    博客分类:
  • JAVA
阅读更多
 
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(202.53));
//          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 % == 0 || ((i % == 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;
    }


}
分享到:
评论

相关推荐

    将金钱数额转为大写汉字,讲汉字转化为拼音,通过ip定位城市

    在IT领域,转换金钱数额为大写汉字,汉字转化为拼音,以及通过IP定位城市是常见的需求,这涉及到了数据处理、字符串操作以及网络地理定位等多个技术方面。下面将详细讲解这三个知识点。 首先,将金钱数额转为大写...

    JAVA实现将数字金额转换为人民币大写

    Java语言实现的,将数字金额转换为人民币大写金额的例子,没有对输入数字进行校验,小数点后只保留两位,支持千分符。最大金额范围为千亿。

    人民币小写转大写VB代码

    ### 知识点一:人民币小写转大写的背景及意义 在财务领域中,经常需要将数字金额转换为汉字大写形式,尤其是在开具发票、签署合同等正式场合下。这种转换有助于提高数据的安全性和防伪性,避免因数字篡改而产生的...

    NumberToWord:Java程序将数字转换成单词

    在编程领域,尤其是在Java开发中,有时我们需要将数字转化为它们对应的英文单词表示,这在诸如账单、报表或者用户友好的界面中很常见。"NumberToWord:Java程序将数字转换成单词"这个主题就是关于如何用Java实现这样...

    C#数字金额转换为大写中文金额

    ### C# 数字金额转换为大写中文金额 在日常财务处理、银行系统以及各种商业应用中,将数字金额转换成大写中文金额是一项非常实用的功能。这种转换主要用于正式文件中的金额表示,如发票、支票等,可以有效防止金额...

    金额大写_金额大写_

    在金融和会计领域,将阿拉伯数字金额转换成大写汉字是必要的,这主要是为了防止篡改和增强账目的清晰度。大写的汉字金额在正式的财务文档如支票、发票和合同中是标准做法,因为它们增加了金额的可读性和安全性。本...

    大写的七字怎么写.docx

    特别是在涉及金钱数额时,大写的汉字数字被用来替代阿拉伯数字,因为它们更难以被篡改。例如,数字“7”的大写形式是“柒”。 在书写大写金额时,有一些特定的规则需要遵循。首先,中文大写金额数字通常会以...

    Java接口的实现 操作

    Java 接口的实现操作 Java 接口是一种抽象的概念,定义了一组方法的集合,但这些方法未被实现。接口的实现是指在某个类中,提供了接口中所有方法的实现。Java 的接口可以学习如何实现 Java 的接口,在编写实现程序...

    大写数字万怎么写.docx

    在这些场合,大写数字不仅表示精确的数额,还体现了正规性和合法性。例如,“伍拾陆万元整”代表560,000元,“壹佰贰拾伍元贰角柒分”代表125.27元。 总结来说,大写数字在金融交易中起到关键作用,规范书写可以...

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

    数字与大写人民币表达式之间的转换是一个常见的编程任务,尤其在财务相关的软件开发中。这个过程涉及到数字的解析和对中文数字体系的理解。在JavaScript中实现这样的转换函数需要处理数字的整数部分和小数部分,并且...

    大写一万元怎么写.docx

    在中国,书写涉及金钱的数额时,为了确保准确性与防止欺诈,通常会采用特定的大写汉字来表示数字。本文主要讨论如何正确书写大写的一万元,以及相关的大写数字规则。 一万元的大写形式是“壹万元整”。在这个表述中...

    最全房贷计算器 java 代码 含算法

    在IT行业中,编程是解决问题的关键工具之一,而Java作为广泛应用的编程语言,常常被用于开发各种实用工具,如“房贷计算器”。本项目提供了一个全面的Java实现房贷计算器的代码,涵盖了房贷计算的各种情况,包括正常...

    java等额本金本息

    等额本金还款法(Equal Principal Payment Method)是指在还款期内,每月偿还固定数额的本金,而利息随着剩余贷款余额的减少逐月递减。因此,每月的还款额由固定的本金部分和剩余贷款余额产生的利息组成,总体还款...

    Java实现个人所得税计算

    在Java编程语言中,实现个人所得税的计算是一项常见的任务,特别是在财务软件或税务管理系统中。以下将详细讲解如何使用Java来实现这一功能,并探讨相关的知识点。 1. **基础概念** - **个人所得税**:是对个人...

    java语言编写的程序和报告

    输出英文字母表 编写一个Java 应用程序,该程序在命令窗口输出英文字母表。 提示:为了输出英文字母表,首先应该获取字母表中的第一个字母和最后一个...用户输入年利率,贷款年数,贷款总额,程序输出每月还款数额。

    资金数额证明(表格模板、DOC格式).doc

    在企业管理中,资金数额证明是一项重要的文档,通常用于记录和证明企业或其分支机构的资金流动情况。这份文档在多个场合起到关键作用,例如对外投资、贷款申请、审计审查或者合作伙伴关系的确立。以下将详细解析...

    银行管理系统 java代码  

    在Java编程语言中,开发一个银行管理系统涉及到许多关键概念和技术,包括用户界面设计、数据处理、安全性以及数据库交互。从提供的代码片段来看,这个系统主要关注用户界面的构建,使用了Swing库来创建图形用户界面...

    地下狂飙2金钱修改器(附C源码)

    本文将深入探讨如何使用C语言编写一个金钱修改器,以针对《极品飞车8:地下狂飙2》这款游戏进行金钱数额的调整。这不仅是一个实用的工具,也是学习C语言编程和理解游戏数据结构的好例子。 首先,我们要了解《极品...

    java语言经典试题100

    根据给定文件的信息,我们可以从中提炼出四个不同的Java编程题目,并对每个题目进行详细解析。 ### 题目一:三位数字的排列组合 #### 题目描述: 编写一个程序,找出所有由1到4这四个数字组成的不重复的三位数。 ...

Global site tag (gtag.js) - Google Analytics