Java中存储金额用什么数据类型

Java面试高频问题:你会用什么数据类型来存储金额?

  如果这个时候你回答float,double那么恭喜你,又可以省出时间来准备别的公司的面试了,当面试官说float,和double不行的时候你可能还一脸懵逼,为啥不行?那么请看下面的例子:

public class Test {
    public static void main(String[] args) {
        double a=1;
        double b=0.9;
        double c=a-b;
        System.out.println(c);

    }
}

  结果要多少,如果你觉得要0.1,那你就错了。结果居然要0.09999999999999998。因为float与double都是浮点数,浮点数参与的运算通常伴随着因为无法精确表示而进行的近似或舍入,所以导致结果会有丝毫的偏差,而涉及金额的计算是绝对不予许存在偏差的。

  第一种方法我们可以使用BigDecimal来表示金额。

  第二种方法就是数据库里存分为单位的整型数据。

原文地址:https://www.cnblogs.com/heqiyoujing/p/11221497.html

时间: 2024-11-08 19:22:15

Java中存储金额用什么数据类型的相关文章

Java中存储金额用什么数据类型?

转自:https://www.cnblogs.com/heqiyoujing/p/11221497.html Java面试高频问题:你会用什么数据类型来存储金额? 如果这个时候你回答float,double那么恭喜你,又可以省出时间来准备别的公司的面试了,当面试官说float,和double不行的时候你可能还一脸懵逼,为啥不行?那么请看下面的例子: public class Test { public static void main(String[] args) { double a=1; d

java中存储金额

很早之前, 记得一次面试, 面试官问存储金钱用什么数据类型? 当时只知道8种数据类型(boolean, byte, short, int, long, float, double, char)的我, 回答了double, 因为我觉得double是双精度类型, 最适合, 但是面试官告诉我应该用BigDecimal! 最近在做支付的项目, 才对这种数据类型有了更多的了解. 栗子 请看题: 示例1 问, 结果是多少? 0.01? No! 结果是0.009999999999999998! 为什么会这样呢

《java中把金额以3位分开的计数法》

     String str1 = "123456789";   str1 = new StringBuilder(str1).reverse().toString();     //先将字符串颠倒顺序   String str2 = "";   for(int i=0;i<str1.length();i++){    if(i*3+3>str1.length()){     str2 += str1.substring(i*3, str1.lengt

java中存储mysql数据库时间类型【date、time、datetime、timestamp】

在MySQL中对于时间的存储自己见表的时候都是设置的varchar类型的,感觉挺方便的. 昨天拿别人建好的表写代码,发现这张表中时间类型为datetime的,凭感觉试了一下不行,网上查了刚开始试了好几个都是不对的,一脸懵逼. -----------------------------------------------------------------------------------------------------------------------------------------

开发java中常用的几种数据类型

JAVA中常用的数据结构(java.util. 中) java中有几种常用的数据结构,主要分为Collection和map两个主要接口(接口只提供方法,并不提供实现),而程序中最终使用的数据结构是继承自这些接口的数据结构类.其主要的关系(继承关系)有:  (----详细参见java api文档!) Collection---->Collections                                                                          

Java中9大内置基本数据类型Class实例和数组的Class实例

1.Java中9大内置几本数据类型: 对于对象来说,可以直接使用对象.getClass()或者Class.forName(className);.类名.class都可以获取Class实例. 但是我们的基本数据类型,就没有类的权限定名,也没有getClass方法. 问题:那么如何使用Class类来表示基本数据类型的Class实例? byte,short,int,long,char,float,double,boolean,void关键字 上述8种类型和void关键字,都有class属性. 表示in

java中的八种基本数据类型

    整数的数据类型: byte(字节)        8位(bit)    2 ^ 8 = 256        -128 ~ 127        short(短整形)    16bit        2 ^ 16 = 65536        int(整形)        32bit        2 ^ 32        long(长整形)    64bit        2 ^ 64 注意:如果一个整数没有加上任何的标识的时候,那么默认是int类型的数据.        如果需要把

慕课网-安卓工程师初养成-2-6 Java中的数据类型

来源:http://www.imooc.com/code/1230 通常情况下,为了方便物品的存储,我们会规定每个盒子可以存放的物品种类,就好比在“放臭袜子的盒子”里我们是不会放“面包”的!同理,变量的存储也讲究“分门别类”! Java 语言是一种强类型语言.通俗点说就是,在 Java 中存储的数据都是有类型的,而且必须在编译时就确定其类型. Java 中有两类数据类型: 在 Java 的领域里,基本数据类型变量存的是数据本身,而引用类型变量存的是保存数据的空间地址.说白了,基本数据类型变量里存

Java基础---Java中的数据类型(五)

Java中的数据类型 通常情况下,为了方便物品的存储,我们会规定每个盒子可以存放的物品种类,就好比在"放臭袜子的盒子"里我们是不会放"面包"的!同理,变量的存储也讲究"分门别类"! Java 语言是一种强类型语言.通俗点说就是,在 Java 中存储的数据都是有类型的,而且必须在编译时就确定其类型. Java 中有两类数据类型: 在 Java 的领域里,基本数据类型变量存的是数据本身,而引用类型变量存的是保存数据的空间地址.说白了,基本数据类型变量