银行java程序员面试第1集 BigDecimal

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

      银行java程序员面试第1集 BigDecimal

       因为float和double都是浮点数, 都有取值范围, 都有精度范围. 浮点数与通常使用的小数不同, 使用中, 往往难以确定. 常见的问题是定 义了一个浮点数, 经过一系列的计算, 它本来应该等于某个确定值, 但实际上并不是! 金额必须是完全精确的计算, 故不能使用double或者float, 而应该采用java.math.BigDecimal.

    加减乘除

      银行java程序员面试第1集 BigDecimal

加减乘除使用了英文的加减乘除, 即add, substract, multiply和divide

    大小比较

银行java程序员面试第1集 BigDecimal

两个BigDecimal值比较使用compareTo方法, 比较结果有-1, 0, 1, 分别表示小于, 等于, 大于; 对于0, 可以使用BigDecimal.ZERO表示!

小数位数及四舍五入规则

银行java程序员面试第1集 BigDecimal

其中setScale的第一个参数是小数位数, 这个示例是保留2位小数, 后面是四舍五入规则

mysql数据库设计

     BigDecimal在进行入库时, 数据库选择decimal类型, 长度可以自定义, 如18; 小数点我们项目中用的是2, 保留2位小数. 此外还要注意的就是默认值, 一定写成0.00, 不要用默认的NULL, 否则在进行加减排序等操作时, 会带来转换的麻烦!

    `balance` decimal(18,2) DEFAULT '0.00' COMMENT '账户余额',