`
jayo
  • 浏览: 16494 次
  • 性别: 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就是专门干这个的。其他语言也有类似的对象或者函数。所以你这个完全没必要。

相关推荐

    把大写金额转换成小写的

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

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

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

    货币大写金额转换插件

    货币大写金额转换插件主要解决的问题是将输入的如"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实践示例** 下面是一个简单的...

    VC开发的金额大小写转换

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

    一个转换中文金额的DEMO

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

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

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

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

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

    java 金额转大写工具类

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

    转换为大写金额.txt

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

    易语言朗读金额

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

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

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

    人民币转换(原代码)

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

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

    在实际项目中,"Demo"工程可能包含了这些功能的实现,通过查看源代码,我们可以学习到如何将数字金额转换为大写金额的具体步骤和方法。如果项目存在BUG,可能涉及上述环节的某个部分,需要仔细分析代码找出问题并...

    常用正则以及数组操作方法.txt

    绝对不吃亏!绝对不吃亏!绝对不吃亏! 元素的操作方法1.el是否包含某个class 字符串的操作方法1.去除空格2....数字转换为大写金额 数组1.判断一个元素是否在数组中2.去重 并集 交集 最大值 最小值

    人民币大写在线转换工具

    标题中的“人民币大写在线转换工具”指的是一个网络应用程序,它的主要功能是将输入的小写的人民币金额转换成规范的大写形式。在财务、会计以及银行等领域,大写的数字用于防止欺诈,因为大写的汉字字符与小写的...

    Android的edittext在弹出框中实现输入自动千分位分隔和金额限制

    在Android开发中,`EditText` 是一个非常常用的控件,用于接收用户输入的数据。在一些特定的场景下,如财务应用或购物应用,我们可能需要对用户输入的金额进行格式化,使其显示为带有千分位分隔的样式,并且限制输入...

    NET 开发框架及开发框架所有的常用DLL

    框架核心API库 包括:常用加密解密,缓存集群,IP地址库,Html Parse,金额转换,GoogleMap Api,Google PR,ImageMagick(图片处理),SharpZipLib压缩解压缩,中文分词核心库 2、WebSystem.Framework.dll 框架核心...

Global site tag (gtag.js) - Google Analytics