Java中浮点数精度问题

Java中的简单浮点数类型float和double不能够进行运算。不光是Java,在其它很多编程语言中也有这样的问题。如下图所示:

public class DataRange{

public static void main(String[] args) {

float number_1 = 0.04f + 0.06f;   // 创建数据1

float number_2 = 0.1f;    // 以同样的值创建数据2

System.out.println(number_1==number_2); // 判断两个数据是否相等

System.out.println("number_1的值为" + number_1); // 输出数据1的值

System.out.println("number_2的值为" + number_2); // 输出数据2的值

}

}

以上代码按常理理解应该是number_1与number_2的值相同才对,但是看以下输出并不是这样:

可以看到两者的值并不相等;因为浮点数在java中是不精确的,比如double d=2.01,你打印出来也是2.01,但是实际上java虚拟机存储的是2.010000000001这个数,java的浮点数不能存储精确的小数点

所以我们应该

最好完全避免使用浮点数进行比较

最好完全避免使用浮点数进行比较

当然在java中也有解决此问题的方案:数学工具类 BigDecimal

java 浮点数精度_Java中浮点数精度问题相关推荐

  1. java float的精度_java中的float和double的精度问题

    此文解释了为何float的范围比int大(同样4字节),但有些int是float无法正确表达的(精度丢失) java中的float和double的精度问题 1.背景知识 在java中没有细讲,只是讲了 ...

  2. bigdecimal 和负数比较_Java中BigDecimal精度和相等比较的坑

    为什么要有BigDecimal ,他是干什么的 float和double类型的主要设计目标是为了科学计算和工程计算.他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计 ...

  3. java浮点数计算_Java之浮点数运算

    浮点数运算和整数运算相比,只能进行加减乘除这些数值运算,不能做位运算和移位运算. 在计算机中,浮点数虽然表示的范围很大,但是浮点数有个非常重要的特点,就是浮点数常常无法精确表示 举例 浮点数0.1在计 ...

  4. java double 计算_Java中的Double类型计算

    一.问题的提出: 如果我们编译运行下面这个程序会看到什么? public class Test{ public static void main(String args[]){ System.out. ...

  5. java 数据类型分为_JAVA中分为基本数据类型及引用数据类型

    byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存中占16位,即2个字节,取值范围-32768~32717,默认值 ...

  6. java 微秒 时间_Java中的当前时间(以微秒为单位)

    Java 9和更高版本:捕获当前时刻时,分辨率高达纳秒.那是9位数的小数. Instant.now() 2017-12-23T12:34:56.123456789Z 要限制为微秒,请截断. Insta ...

  7. java mod %区别_Java中 % 与Math.floorMod() 区别详解

    %为取余(rem),Math.floorMod()为取模(mod) 取余取模有什么区别呢? 对于整型数a,b来说,取模运算或者取余运算的方法都是: 1.求 整数商: c = a/b; 2.计算模或者余 ...

  8. java show过时_Java中show() 方法被那个方法代替了? java编程 显示类中信

    你说的show是swing里的吧,在老版本中Component这个超类确实有show这个方法,而且这个方法也相当有用,使一个窗口可见,并放到最前面.在jdk5.0中阻止了这个方法,普遍用setVisi ...

  9. java判断类型_Java中类型判断的几种方式 - 码农小胖哥 - 博客园

    1. 前言 在Java这种强类型语言中类型转换.类型判断是经常遇到的.今天就细数一下Java中类型判断的方法方式. 2. instanceof instanceof是Java的一个运算符,用来判断一个 ...

最新文章

  1. R计算获取决策曲线数据(Decision Curve Analysis,DCA)并使用python进行可视化
  2. Web压力测试系统 nGrinder
  3. 单点登录系统(SSO)和Session共享解释
  4. how to handdraw a web UI for applications? Figma
  5. Apache Shiro去掉URL中的JSESSIONID
  6. 【ubuntu】ubuntu18.04:在处理时有错误发生:ufw E: Sub-process /usr/bin/dpkg returned an error code (1)
  7. 北大青鸟广州天河中心S1T62班HTML项目答辩实录
  8. java隐含转化_java中自动转换和强制转换还有隐含转换
  9. show table status 参数详解
  10. hdu 5031 Lines 爆搜
  11. java clone数组_Java中的数组有对应的类么,为什么数组可以直接调用clone()方法?...
  12. c语言中的面积和体积计算器,C语言编程问题(面积计算器)——新手问题
  13. Django——09.spaceless, autescape, verbatim标签
  14. vue.js 拖拽排序_快速轻巧的Vue.js拖放可排序库
  15. itext设置字体间距_word打印技巧:几个节省纸张的打印设置方法
  16. STM32F407VET6 / BLACK_F407VE开发板间隔0.5秒不断重启
  17. Apache POI读合并单元格
  18. Hadoop基础教程-第12章 Hive:进阶(12.3 HiveServer2)(草稿)
  19. c语言经典程序100例 九宫格,9X9,九宫格测试,C编程。
  20. 如何快速创建在线员工培训课程

热门文章

  1. C语言中Static和Const关键字的的作用
  2. python的setup.py文件及其常用命令
  3. JVM_垃圾收集器与内存分配策略01
  4. [ 云炬创业基础笔记]商业模式创新
  5. [云炬创业基础笔记] 第三章测试10~12
  6. 科大星云诗社动态20210905
  7. SVM_GUI_3.1[mcode]{by faruto}的安装及使用
  8. VTK修炼之道28:图像统计_灰度直方图计算
  9. 利用Sql Server2005发送邮件
  10. ASP.Net生成静态HTML页!