`

金额格式化

 
阅读更多

public class MoneyUtil {

 

// 调试时用main函数

    public static void main(String args[]) {

        System.out.println(toRMB(62261.19));

    }

    

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

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

            "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "万", "拾", "佰", "仟" };

    

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

    }

    public static String toRMB(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;

    }

 

}

分享到:
评论

相关推荐

    基于vueelement的金额格式化组件

    在实际项目中,我们经常需要处理与金钱相关的数据,这时就需要用到金额格式化组件。"基于vue-element的金额格式化组件"是针对这一需求而设计的,它将帮助我们在Vue.js应用中方便地展示和输入货币值。 Vue Element是...

    javascript精确计算日期处理金额格式化

    在JavaScript开发中,日期处理和金额格式化是两个常见的需求,尤其在财务或者数据分析相关的应用中更为重要。JavaScript原生提供了Date对象来处理日期,但其功能相对有限,因此开发者通常会利用各种库来增强其功能,...

    asp.net+js实现金额格式化.docx

    此外,文章还提到了其他相关的JavaScript金额格式化文章,这些文章提供了不同的方法和思路,可以帮助开发者更全面地理解和解决金额格式化的问题。通过学习和实践这些代码,开发者可以更好地应对在开发过程中遇到的...

    金额格式化与反格式化.txt

    按要求将金额格式化,如:123456变成1,234.56 以分为单位

    js 金额格式化来回转换示例

    在JavaScript中,金额格式化是一种常见的需求,尤其在前端开发中,为了提升用户对金额的可读性,通常会将数字按照千位分隔符进行格式化,并保留一定数量的小数位。而有时又需要将格式化后的金额还原成原始的数字,...

    asp.net+js实现金额格式化

    综合以上代码,我们可以实现一个功能完备的金额格式化输入框。用户在输入时,输入的金额会实时地按照每三位数字加逗号的规则进行格式化,同时保留两位小数。这个实现不仅提高了用户体验,也保证了数据的正确性,避免...

    把数字格式化成大写的金额显示(完整版)

    把数字格式化成大写的金额显示(完整版)

    oracle格式化为数字

    最简洁的oracle格式化为数字,保留小数位数,简单易行,功能全面

    JS中格式化数字的5个方法

    此函数用于格式化金额数字,使其具有标准的货币格式。它能够正确处理负数,并确保结果始终保留两位小数。 #### 参数说明 - `amount`: 需要被格式化的金额数字。 #### 示例代码 ```javascript function ...

    java对输入的人民币进行格式化

    格式化人民币,能将您输入的数字格式化成人民币类型,欢迎下载。

    wnumb-1.1.0(js数字&金额格式化,千分位)

    wnumb.js是一个前端格式化数字金额的插件,比如常见的数字千分位问题。用法如下: // 定义格式化的规则 var moneyFormat = wNumb({ mark: '.', thousand: ',', prefix: '$ ', suffix: ' p.p.' }); // 格式化一...

    Go-golang中金额和货币格式

    在Go-golang编程语言中,处理金额和货币格式化是一个重要的任务,特别是在开发财务软件时。Go语言提供了强大的工具和库来帮助开发者有效地处理这些数值。在这个场景中,我们关注的是`accounting`包,它是一个专为Go...

    把金额数字格式化大写的形式

    在IT行业中,尤其是在财务软件开发或者银行系统中,将金额数字格式化为大写形式是一项常见的需求。这有助于确保财务报告的清晰度和准确性,同时符合中国的会计规范。本篇文章将详细探讨如何实现这一功能,主要针对...

    返回格式化后的金额字符串,jquery.format money

    这个是网里边传值,然后在动返回格式化后的金额!很好用,不好用你拍我!

    jQuery货币金钱格式化数字插件

    accounting.js是什么,金钱和货币格式一个微小的JavaScript库,使用可选的Excel风格的列渲染(排队符号和小数)。它的重量轻,完全可本地化和具有零依赖性。 演示地址:http://www.jq22.com/jquery-info326

    DataGridView财务金额格式显示

    在.NET框架中,`DataGridView`控件是用于展示表格数据的常用组件,广泛应用于各种桌面应用程序。...以上所述的步骤和技巧将帮助你更好地实现`DataGridView`中的财务金额格式化,提高应用的专业性和用户体验。

    finereport格式化金额函数js中进行数字超大金额千位符格式化处理.docx

    "finereport格式化金额函数js中进行数字超大金额千位符格式化处理" 本文主要讲解了finereport格式化金额函数在JS中进行数字超大金额千位符格式化处理的方法。该需求在前端开发中非常普遍,例如音乐app中的歌曲播放...

    VB 将小写数字金额格式化为大写金额.rar

    VB 将小写数字金额格式化为大写金额,这一个相比其它的金额数字转换,是自动转换,用户输入完小写数字金额后,程序将自动把小写数字变为大写,不过奇怪的是,在代码中并没有发现转换功能写在哪里,看到有数据库,...

    js实现的格式化数字和金额功能简单示例

    ### JavaScript 数字和金额格式化知识点 #### 1. 格式化数字和金额的概念 在Web开发中,常常需要对数字进行格式化处理,以便以更易读的格式展示给用户。格式化数字和金额指的是将原始的数字字符串转换成带有千位...

Global site tag (gtag.js) - Google Analytics