当前位置: 首页 > 工具软件 > 并元 > 使用案例 >

java 分转元_java元转分分转元

宋畅
2023-12-01

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

AmountUtil.javapackage 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/article/49.html

 类似资料: