`
jayo
  • 浏览: 16989 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

金额转换常用方法

 
阅读更多
   不管是做银行的接口,还是一般支付公司的接口,都会用到一些
相关的接口,一般接口对传递的金额都会有相关的要求,一般都是以
分为单位,要转换其实并不难,但很多情况下就是怕出错,钱啊!!
所以小心了还得小心,金额中最忌讳的就是double和int的混合运算
了,本机上不出问题,草草测试的后果就不堪设想,用户的数据千奇
百怪,一不小心就是大问题,我这里写了两个常用的方法,我的想法
是减少运算,尽量是字符串操作,减少出错!仅供参考!

希望在这里能抛砖引玉!

    /**
     * 将以分为单位的字符串转换为double类型
     * @param s
     * @return
     */
    public static double str2Double(String s) {
        double r = 0.0;
        int k = Integer.parseInt(s);
        String ss = String.format("%1$012d", k);
        System.out.println(ss);
       
        StringBuffer sb = new StringBuffer();
        sb.append(ss.substring(0, 10));
        sb.append(".");
        sb.append(ss.substring(10));
       
        r = Double.parseDouble(sb.toString());
        return r;
    }
   
    /**
     * 拿取去掉小数点的金额
     * @param amount
     * @return
     */
    public static String getAmountStr(double amount) {
        //amount*100不能超过int的最大值     订单交易金额,12位长度,左补0,必填,单位为分
        String TransAmt = "";
        String amountStr = amount+"";
        int _tempAmt = Integer.parseInt(amountStr.replaceAll("\\.",""));
        if(amountStr.matches("[0-9]+\\.[0-9]{2}")){
            TransAmt = String.format("%1$012d", _tempAmt);
        } else if(amountStr.matches("[0-9]+\\.[0-9]{1}")) {
            TransAmt = String.format("%1$011d0", _tempAmt);
        } else if(amountStr.matches("[0-9]+")) {
            TransAmt = String.format("%1$010d00", _tempAmt);
        }
        return TransAmt.replaceAll("^0+", "");
    }
分享到:
评论
5 楼 legend9999 2010-06-24  
魔力猫咪 写道
jayo 写道
魔力猫咪 写道
拜托,浮点数的精确运算在各个语言中一般都提供专门的对象或者函数。Java中BigDecimal就是专门干这个的。其他语言也有类似的对象或者函数。所以你这个完全没必要。

你可能误解我的意思了,如果你做个支付的接口就知道这两个函数比较重要了,这里说的并不是数值的运算!

不明白?难道说是客户端的数据总传错的?

在接口传送 的时候,对方要某种格式的,用这种方法还是有用的
4 楼 魔力猫咪 2010-01-18  
jayo 写道
魔力猫咪 写道
拜托,浮点数的精确运算在各个语言中一般都提供专门的对象或者函数。Java中BigDecimal就是专门干这个的。其他语言也有类似的对象或者函数。所以你这个完全没必要。

你可能误解我的意思了,如果你做个支付的接口就知道这两个函数比较重要了,这里说的并不是数值的运算!

不明白?难道说是客户端的数据总传错的?
3 楼 jayo 2010-01-18  
魔力猫咪 写道
拜托,浮点数的精确运算在各个语言中一般都提供专门的对象或者函数。Java中BigDecimal就是专门干这个的。其他语言也有类似的对象或者函数。所以你这个完全没必要。

你可能误解我的意思了,如果你做个支付的接口就知道这两个函数比较重要了,这里说的并不是数值的运算!
2 楼 zpchen 2009-12-28  
正则学的不错,但是....
   哎!头回见这样的java工人
1 楼 魔力猫咪 2009-12-27  
拜托,浮点数的精确运算在各个语言中一般都提供专门的对象或者函数。Java中BigDecimal就是专门干这个的。其他语言也有类似的对象或者函数。所以你这个完全没必要。

相关推荐

    C# - 阿拉伯数字金额转换为繁体数字金额

    这个特定的项目“C# - 阿拉伯数字金额转换为繁体数字金额”专注于一个常见的财务处理任务,即把通常用阿拉伯数字表示的货币金额转化为繁体中文的表示方式。这在中文环境中特别有用,因为繁体数字在正式的商业文档和...

    把大写金额转换成小写的

    将大写金额转换为小写是日常业务处理中常见的一项操作。下面,我们将详细介绍如何进行这种转换,并探讨相关的知识点。 首先,我们需要了解大写金额的规范。在中国,大写金额通常遵循以下规则: 1. 数字“0”对应...

    小写金额转换成大写金额

    PowerBuilder 是一种常用的开发工具,但其标准库并未提供直接将小写金额转换为大写金额的函数。因此,程序员通常需要自定义函数来实现这一功能。以下是一个在 PowerBuilder 中转换小写金额到大写金额的示例代码。 ...

    货币大写金额转换插件

    货币大写金额转换插件主要解决的问题是将输入的如"123456.78"这样的小写金额转换成"壹拾贰万叁仟肆佰伍拾陆元柒角捌分"的大写形式。这个插件通常包含以下功能: 1. **数字转汉字**:将数字0-9转换为对应的汉字,...

    小写金额转换成大写金额源代码

    在IT行业中,编程时常涉及到各种数据格式的转换,其中一种常见的需求是将小写的数字金额转换为财务报表中常用的大写格式。这个过程通常是为了确保财务记录的清晰度和准确性,因为大写数字在视觉上更不容易被篡改。...

    大小写金额转换-源码

    //常用方法调用接口 function ChineseUpper(Curr: Currency): String; function ChineseDate(ADate: TDate; DigitsYear: Boolean = False): String; function ChineseTime(ATime: TTime; HasSecond: Boolean = ...

    关于金额大,小写转换的问题

    大写金额转换为小写金额相对简单,因为只需要解析汉字或罗马数字为对应的阿拉伯数字。这个过程可以通过查找和替换实现,但需要注意处理特殊字符和进位规则。 **三、JavaScript实践示例** 下面是一个简单的...

    Ireport实现金额大写(自己实现的)

    本文将详细介绍如何使用Ireport内置的Scriptlet功能实现将金额转换为大写的汉字表示,这对于财务报表的制作尤为重要,因为在中国,金额通常需要以中文大写的形式出现,以增加数据的准确性,防止篡改。 首先,我们要...

    VC开发的金额大小写转换

    同时,考虑到金额转换的特殊性,如“10”应该转换成“拾”,而不是“壹零”,需要在特定情况下进行合并处理。此外,还要处理诸如“123.45”这样的小数,确保整数部分和小数部分都能正确转换。 在实现这个功能时,...

    一个转换中文金额的DEMO

    在IT行业中,中文金额转换是一项常见的需求,尤其是在财务软件或者报表系统中。这个"一个转换中文金额的DEMO"提供了一个解决此类问题的实例。它是一个类,专门用于将数字形式的日期和金额转换为中文的表述方式。下面...

    java 金额转大写工具类

    可以把金额数值转为财务上常用的金额大写,如100元 转为壹佰园

    js常用100例方法 正则 移动设备判断 金额转换等 页面resize 超实用

    1、原生JavaScript实现字符串长度截取 2、原生JavaScript获取域名主机 3、原生JavaScript清除空格 4、原生JavaScript替换全部 11、原生JavaScript加入收藏夹 15、原生JavaScript返回脚本内容 17、原生JavaScript动态...

    mysql数据类型转换

    `CONVERT`函数也是实现数据类型转换的一个常用方法,特别是在处理字符类型到数字类型的转换时。 ```sql -- 示例:将字符串'123'转换为整型 SELECT CONVERT('123', SIGNED); ``` #### 五、总结:类型转换语法与...

    将数字转换为大写金额字符串源码(C#)

    以下是一个关于“将数字转换为大写金额字符串”的详细知识点: 1. **数字与汉字的对应关系**: 在转换过程中,数字0到9需要对应相应的汉字,如0对应“零”,1对应“壹”,以此类推。同时,还需要处理特殊的大写...

    JAVA常用方法集合

    虽然这部分代码没有给出具体实现,但可以推测其功能是将阿拉伯数字形式的金额转换为中文大写形式。这在财务系统中非常常见,用于正式文档如发票、支票等。 #### 3. 日期转换为字符串 **方法描述**: 此方法接收一...

    转换为大写金额.txt

    转换大写金额,把他做成自定义函数,放进VBA模块即可使用,是excel中回用到的一个常用函数,学习他很有用哦,希望大家能学会,谢谢大家的支持

    易语言朗读金额

    在这个项目中,“子程序1”很可能是负责金额转换的核心部分,它接收一个数值作为输入,然后返回对应的口语化字符串。 在实现金额转换时,我们可能需要以下步骤: 1. **数字格式化**:将金额转换为无符号、不带逗号...

    金额的大小转换及小数的四舍五入处理

    金额的大小转换和小数的四舍五入处理是确保数据准确性和一致性的重要环节。下面我们将详细探讨这两个方面。 首先,金额的大小转换通常涉及到数字的格式化。在计算机系统中,数字通常是无格式的,但在显示或存储时,...

    excel中文金额大写公式

    在日常工作中,我们经常会遇到需要将数字金额转换成中文大写的情况,尤其是在财务、会计等专业领域。Excel提供了强大的功能来帮助我们完成这项工作,其中一个实用的方法就是利用Excel中的`NUMBERSTRING`函数结合其他...

    人民币转换(原代码)

    其中,C#是Windows桌面应用开发的常用语言,所以`WindowsApplication1`可能是C#编写的Windows Forms应用程序。通过分析代码,我们可以学习到C#中字符串处理、条件判断、循环结构等基础语法,以及如何利用窗体控件...

Global site tag (gtag.js) - Google Analytics