• 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

  • 相关阅读:
    Windows网络编程:多线程技术
    Windows网络编程:OSI七层模型
    Windows网络编程:WinSock模型
    Windows网络编程:基于Scoket最简单的CS
    Windows网络编程:同步/异步 阻塞/非阻塞
    1.WebGL:简介
    无聊的面试啊:2020
    第一次面试
    实习第三周
    Eclipse新建web项目
  • 原文地址:https://www.cnblogs.com/pxblog/p/13212162.html
Copyright © 2020-2023  润新知