JAVA中价格金额的存储类型
Posted yvioo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA中价格金额的存储类型相关的知识,希望对你有一定的参考价值。
在java项目中,我们会遇到价格、金额的数据,这时候我们java中应该用BigDecimal类型,数据库用decimal类型, 长度可以自定义, 如18; 小数点我们项目中用的是2, 保留2位小数. 此外还要注意的就是默认值, 一定写成0.00, 不要用默认的NULL, 否则在进行加减排序等操作时, 会带来转换的麻烦。
以下是一些换算代码
package com.bigdecimal; import java.math.BigDecimal; import java.math.RoundingMode; public class Test { public static void main(String[] args) { BigDecimal num=new BigDecimal("2"); BigDecimal num1=new BigDecimal("0.01"); //加法 System.out.println(num.add(num1)); //减法 System.out.println(num.subtract(num1)); //乘法 System.out.println(num.multiply(num1)); //除法 System.out.println(num.divide(num1, RoundingMode.HALF_UP)); //比较两个数大小 if (num.compareTo(num1)==-1){ System.out.println(num+"小于"+num1); }else if (num.compareTo(num1)==0){ System.out.println(num+"等于"+num1); }else if (num.compareTo(num1)==1){ System.out.println(num+"大于"+num1); } //精度换算 BigDecimal num2=new BigDecimal("4.281"); //删除多余的小数位 System.out.println(num2.setScale(2,BigDecimal.ROUND_DOWN)); //直接进位 System.out.println(num2.setScale(2,BigDecimal.ROUND_UP)); //四舍五入 System.out.println(num2.setScale(2,BigDecimal.ROUND_HALF_UP)); //五舍六入 System.out.println(num2.setScale(2,BigDecimal.ROUND_HALF_DOWN)); } }
结果
2.01
1.99
0.02
200
2大于0.01
4.28
4.29
4.28
4.28
以上是关于JAVA中价格金额的存储类型的主要内容,如果未能解决你的问题,请参考以下文章