java元转分分转元

—— java元与分互相转换
标签: 转换 工具类
2018-01-04 阅读(708)

一个简单的元转分分转元工具类,是使用了BigDecimal来对金额高精度计算。BigDecimal的介绍这里就不展开了。直接上代码:


AmountUtil.java

package com.weizhixi.test;

import java.math.BigDecimal;

/**
 * 金额工具类
 * Created by cxq on 2018/1/4.
 */
public class AmountUtil {

    /**
     * 分转元(除以100)四舍五入,保留2位小数
     * @param amount 金额 元
     * @return
     */
    public static String changeF2Y(String amount){
        return new BigDecimal(amount).divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP).toString();
    }

    /**
     * 元转分(乘以100)
     * @param amount 金额 分(支持大数字,16位以上)
     * @return
     */
    public static String changeY2F(String amount){
        return new BigDecimal(amount).multiply(new BigDecimal(100)).toString();
    }

    public static void main(String[] arg){

        //普通数值
        System.out.println(changeF2Y("101"));
        //1.01
        System.out.println(changeY2F("101"));
        //10100

        //超16位以上数值
        System.out.println(changeF2Y("34353452345768679845234534343445"));
        //343534523457686798452345343434.45
        System.out.println(changeY2F("32123134757697845454423534232323"));
        //3212313475769784545442353423232300
    }

}


multiply(BigDecimal)

BigDecimal对象中的值相乘,返回BigDecimal对象


divide(BigDecimal)

BigDecimal对象中的值相除,返回BigDecimal对象


setScale(scale, BigDecimal.ROUND_HALF_UP)

setScale()方法用于格式化小数点

scale 精度(保留几位小数)

ROUND_HALF_UP 四舍五入


需要使用double,要注意:

1、请使用 BigDecimal.valueOf(amount) 进行转换,不能直接new BigDecimal(amount),这样会出现精度问题。

2、以double入参,以double精度为准。

正确示例:

public static String changeF2Y(double amount){
    return BigDecimal.valueOf(amount).divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP).toString();
}


原创文章,转载请注明出处:https://www.weizhixi.com/user/index/article/id/49.html

分类:
点击(837) 阅读(708) 举报