在Java开发中,可能遇到金额单位的转换,比如本系统用分作为金额的基本单位,对方系统用元作为金额的基本单位,这就需要进行单位转换,记录下来,方便备查。
一、分转元
分转元,分到元相差两位,小数点前移2位,即除于100,long转decimal,可使用 divide方法。
注意要使用setScale,指定小数点保留位数。
/**
* 功能:Long转换给双精度decimal(分转元)
*
* @param amount
* @return
*/
public static BigDecimal transLongToDecial(Long amount) {
if (null == amount) {
return new BigDecimal(0);
}
return new BigDecimal(amount).divide(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP);
}
单元测试转换
// 分转元
Long amount = 1829L;
BigDecimal decialAmount = transLongToDecial(amount);
System.out.println("分转元transLongToDecial为:" + decialAmount);
执行结果如下所示
二、元转分
元转分,分到元相差两位,小数点后移2位,即乘于100,decimal转long,可使用 multiply方法。
/**
* 功能:双精度decimal转换Long(元转分)
* @param amount
* @return
*/
public static Long transDecialToLong(BigDecimal amount) {
if(null == amount) {
return 0l;
}
return amount.multiply(new BigDecimal(100)).setScale(1, RoundingMode.HALF_UP).longValue();
}
单元测试
// 元转分
BigDecimal decimalAmount = new BigDecimal(18.29);
Long longAmount = transDecialToLong(decimalAmount);
System.out.println("元转元transDecialToLong为:" + longAmount);
测试结果如下图所示。
以上就是分和元相互转换的工具方法,仅供参考!