zoukankan      html  css  js  c++  java
  • 金钱货币用什么类型--(Java)

    0、前言

      项目中,基本上都会涉及到金钱;那么金钱用什么数据类型存储呢?

      不少新人都会认为用double,因为它是双精度类型啊,或者float,

      其实,float和double都是不能用来表示精确的类型的,也就是说金钱是万万不能用float和double来存储的!

    1、why?

    先来个例子:

    你猜猜输出是什么,0.01?NO,请看:

      为什么会这样呢?

       因为float和double都是浮点数, 都有取值范围, 都有精度范围. 浮点数与通常使用的小数不同, 使用中, 往往难以确定.

      常见的问题是定义了一个浮点数, 经过一系列的计算, 它本来应该等于某个确定值, 但实际上并不是!

      所以说,float和double都是不能用来表示精确的类型的;

      金额必须是完全精确的计算, 故不能使用double或者float, 而应该采用java.math.BigDecimal.

    2、结论

      float和double都是不能用来表示精确的类型的,也就是说金钱是万万不能用float和double来存储的!

      金钱应该采用java.math.BigDecimal存储;

      MYSQL数据库选择decimal类型,注意默认值 一定写成0.00, 不要用默认的NULL, 否则在进行加减排序等操作时, 会带来转换的麻烦!

    3、BigDecimal的常用方法

     

     

  • 相关阅读:
    Java基础之开发工具Eclipse的使用
    Java基础之身份证验证
    如何理解“程序=算法+数据结构”这句话
    JDBC
    Java与其它语言的比较
    Java整体之JavaEE
    Java项目之项目模板(登录注册)
    二进制
    计算机发展历程
    Spring错误:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.Bi
  • 原文地址:https://www.cnblogs.com/yanghj/p/12834423.html
Copyright © 2011-2022 走看看