• 找零时刻


    问题:

    用两美元买了1.10美元的东西,问需要找多少零钱

    import java.util.*;
    public class Second{
            public static void main(String[] args){
                    System.out.println(2.00-1.10);
            }
    }

    输出是什么?

    答案:0.8999999999999999

    为什么不是0.90?因为1.10在内存中不能精确存储,因此存了最接近它的一个数,

    import java.util.*;
    public class Second{
            public static void main(String[] args){
                    System.out.printf("%.2f
    ",2.00-1.10);
            }
    }

    输出:0.90

    虽然得到了预期,但是显然并没有解决内存中存储的问题,我们只是在输出层面上解决了问题

    先介绍下BigDecimal

    对于不需要任何准确计算精度的数字可以直接使用float或double,但是如果需要精确计算的结果,则必须使用BigDecimal类,而且使用BigDecimal类也可以进行大数的操作。

    序号

       

    类型

       

    1

    public BigDecimal(double val)

    构造

    将double表示形式转换

    为BigDecimal

    2

    public BigDecimal(int val)

    构造

    将int表示形式转换为

    BigDecimal

    3

    public BigDecimal(String val)

    构造

    将字符串表示

    形式转换为BigDecimal

    4

    public BigDecimal add(BigDecimal augend)

    普通

    加法

    5

    public BigDecimal subtract(BigDecimal
    subtrahend)

    普通

    减法

    6

    public BigDecimal multiply(BigDecimal
    multiplicand)

    普通

    乘法

    7

    public BigDecimal divide(BigDecimal
    divisor)

    普通

    除法

    import java.util.*;
    import java.math.*;
    public class Second{
            public static void main(String[] args){
                    //System.out.println(2.00-1.10);
                    //System.out.printf("%.2f
    ",2.00-1.10);
                    System.out.println(new BigDecimal("2.00").subtract(new BigDecimal("1.10")));
            }
    }

    需要说明的是需要用字符串构造BigDecimal,否则输出依然是错误的。

  • 相关阅读:
    Web前端工程师技能列表
    CSS框架的相关汇总(CSS Frameworks)
    一个有趣的发现
    (转丁学)Firefox2的一个bug和脑子进了水的IE
    深入语义:列表Tag(ul/ol)和表格Tag(table)的抉择
    css命名简单框架
    腾讯的三栏布局考题
    土豆网前端概况
    伪绝对定位(译)
    右下角浮动广告代码DEMO
  • 原文地址:https://www.cnblogs.com/qionghua520/p/4370618.html
Copyright © 2020-2023  润新知