概述
java中涉及到浮点计算,就会有误差,
float和double只能用来做科学计算或者是工程计算,在商业计算中我们要用 java.math.BigDecimal
public class MoneyTest{
public static void main(String[] args) {
System.out.println(2.00 - 1.10);// 0.8999999999999999
System.out.println(2.00D - 1.10D);// 0.8999999999999999
System.out.println(2.00F - 1.10F);// 0.9
System.out.println(Double.toString(2.00D));// 2.0
System.out.println(BigDecimal.valueOf(2.00).subtract(BigDecimal.valueOf(1.10)));// 0.9
System.out.println(BigDecimal.valueOf(2.00F).subtract(BigDecimal.valueOf(1.10F)));// 0.899999976158142
System.out.println(BigDecimal.valueOf(2.00D).subtract(BigDecimal.valueOf(1.10D)));// 0.9
System.out.println(new BigDecimal("2.00").subtract(new BigDecimal("1.10")));// 0.90
}
}
在这里,我介绍一种方便计算的方式:将单位 : 元 -> 分
这时,计算时 都是整型在参与计算,大大减少使用BigDecimal计算时带来的麻烦。
/**
* 将元变成分 如 0.01元 变成 1分
*
* @param str
*
金额(元)
* @return
*/
public static String moneyYuanToFen(String str) {
Double num = Double.parseDouble(str);
int result = (int) (num * 100);
return String.valueOf(result);
}
/**
* 将分变成元 100分 -> 1元
*
* @param amount
*
金额(分)
* @return
*/
public static String moneyFenToYuan(Long amount) {
return new BigDecimal(amount).divide(new BigDecimal(100)).setScale(2).toString();
}
最后
以上就是大方月光为你收集整理的Java中涉及到金钱计算方法的全部内容,希望文章能够帮你解决Java中涉及到金钱计算方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复