美文网首页java学习之路
java将数值(double)类型转化成人民币大写

java将数值(double)类型转化成人民币大写

作者: 唯有努力不欺人丶 | 来源:发表于2020-10-28 16:44 被阅读0次

这个功能其实还算常见,本来我以为这个方法随便百度就有了,结果真百度了才发现千篇一律的一个代码。简直脑子有坑,各种跟帖转发是怎么想的?一肚子脏话骂不出口(我不想承认是因为没白嫖到所以恼羞成怒了)

反正情况就是这么个情况,网上的代码写了一大堆,全是挺全的,又是去逗号,又是判断是不是数字的。反正我这里场景是确定是两位小数的double类型转成金额大写,我这里简单封装下能实现这个功能就行了(ps:因为我这里不会超过百万都,所以我写到亿,亿以上的转换就不写了,还有我这里就两位小数,到分就后用了,厘也不写了)。

public static String DoubleToString(Double num) {
        //将数字变成单纯的字符串
        String string = String.valueOf(num).replace(".", "");
        // 大写数字
        String[] numbers = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
        //数位对应名称
        String[] d = {"分","角","元","拾","佰","仟","万","拾","佰","仟","亿"};
        StringBuffer sb = new StringBuffer();
        char[] c = string.toCharArray();//后面的是分。所以倒叙遍历
        int idx = 0;
        for(int i =c.length-1;i>=0;i-- ) {
            //我确定我传入的数字是两位小数的,从分开始。所以不做额外判断
            //也因为不会超过亿,所以idx也不判断
            sb.append(d[idx++]+(numbers[c[i]-'0']));
        }    
        //之前是倒叙追加的。现在直接反转
        return sb.reverse().toString();
    }

就这么个方法实现了我想要的基本功能。我也不知道百度上是什么乱七八糟的,恨不得几百行代码。在方法里判断是不是数字的,不会在传参的时候直接判断下?果然自己动手丰衣足食。
然後说一下我上面的方法对传入参数比较严格。一定是保留两位小数的数值。不过这个因为我的使用场景是直接从数据库中拿出来的,这块已经定死了。甚至哪怕在传参之前套一层
new BigDecimal(value).setScale(2, RoundingMode.HALF_UP)也就能解决的。
当然了如果你们是保存到厘的就改动一下上面的代码就行了。反正自我感觉我这个比那些百度上只会cv,千篇一律,看起来详细判断全实际上全踏马是无用功的代码强。
本篇笔记就记到这里,如果稍微帮到你了记得点个喜欢点个关注,也祝大家工作顺顺利利!ps:我是那种很喜欢记录的人,一些小的工具类,封装的方法也会贴出来。希望有一日想写的所有方法百度上都有现成的,哈哈!

相关文章

网友评论

    本文标题:java将数值(double)类型转化成人民币大写

    本文链接:https://www.haomeiwen.com/subject/zpccvktx.html