zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    mongo相关
    grafana相关
    问题与解决
    蓝鲸社区版6.0填坑指南
    go环境
    docker相关
    gitlab相关
    LRU(Least recently used,最近最少使用)
    LRU:最近最久未使用
    学习大神笔记之 “MyBatis学习总结(一)”
  • 原文地址:https://www.cnblogs.com/pxblog/p/13212162.html
Copyright © 2011-2022 走看看