zoukankan      html  css  js  c++  java
  • 16.10.17学到的Java知识

    1.

    例:3-2.6==0.4的值是什么?可能乍一看,感觉是返回TRUE,因为3-2.6=0.4,0.4==0.4;所以返回TRUE。

    然而,上面分析在JAVA中是错的。

    由于浮点数的运算在JAVA中是不精确的,所以可以看出3-2.6=0.39999999999999;所以很明显3-2.6==0.4返回false。

     

    问题来了,浮点数为什么在JAVA中运算不精确呢?

    初步了解,与浮点数在计算机中的表示有关。

     

    (使用BigDecimal,一个参数是String类型,一个参数是Double类型的区别)

    经过询问度娘,知道:“这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学记数法。
    ”,“精度问题也就由此产生,许多数都是无法在有限的n内完全精确的表示出来的,我们只能利用更大的n值来更精确的表示这个数

    ”,于是乎,浮点数的表示都不是最精确的,那么,很明显,浮点数的运算结果也不是不精确的结果。

    而解决这个问题的方法(即浮点数该怎么运算才能更加精确呢?)就是使用BigDecimal类。

     

    注意用String类型的参数进行初始化。

    在此附上BigDecimal类的相关知识:

    “BigDecimal一共有4个构造方法:

    BigDecimal(int) 创建一个具有参数所指定整数值的对象。

    BigDecimal(double) 创建一个具有参数所指定双精度值的对象。

    BigDecimal(long) 创建一个具有参数所指定长整数值的对象。

    BigDecimal(String) 创建一个具有参数所指定以字符串表示的数值的对象。

     

    BigDecimal 的运算方式 不支持 + - * / 这类的运算 它有自己的运算方法:

     

    BigDecimal add(BigDecimal augend) 加法运算

    BigDecimal subtract(BigDecimal subtrahend) 减法运算

    BigDecimal multiply(BigDecimal multiplicand) 乘法运算

    BigDecimal divide(BigDecimal divisor) 除法运算”

    2.

    重新看老师的课件,发现这个东东挺有用的。

     

  • 相关阅读:
    easyui datagrid 前后台代码
    JVM
    序列化
    Android UI设计
    多线程
    泛型
    字符串
    B+树:MySql数据库索引是如何实现的
    大数据判存算法:海量数据中快速判断某个数据是否存在
    陌生单词
  • 原文地址:https://www.cnblogs.com/haojun/p/5971512.html
Copyright © 2011-2022 走看看