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的常用方法

     

     

  • 相关阅读:
    【原】文本图片自适应高度小bug以及解决办法
    【原】iOS学习39网络之数据请求
    【原】iOS学习38网络之数据解析
    iOS数据持久化文件读写之偏好设置
    SQLite错误码
    iOS开发代码规范(通用)
    iOS学习37数据处理之CoreData
    iOS中的单例
    iOS学习36数据处理之SQLite数据库
    UIImage两种初始化的区别
  • 原文地址:https://www.cnblogs.com/yanghj/p/12834423.html
Copyright © 2011-2022 走看看