阅读本文大概需要 1 分钟。

先来考考大家,在下列 Java 代码中,你觉得在控制台会打印什么值呢?

貌似难不倒大家,这不是 so easy ,连小学生都会算的题目,1.0 - 0.9 = 0.1 啊,但是你觉得会等于 0.1 吗?

看下上图代码的输出结果:

有没有惊讶,有没有很刺激,0.0……02 难道被计算机吃掉了???

好吧,当初我也是这幅表情(原谅我基础薄弱)。

那如果我们将其换成 float 类型的会怎么样呢?再来试试。

控制台打印结果:

结果居然多了 0.10…24,那不得乐开花啊~

那么以上这些现象是为什么呢?

浮点数在计算机中采用二进制表示,而二进制系统无法精确表示某些小数,比如 1/10 ,就像十进制无法表示 1/3 一样,这样是产生误差的原因。

在企业开发中,当涉及到钱的计算时应该使用 BigDecimal 类型来处理,尤其是在金融领域,只要和钱有关的任何逻辑,都是大事,反之没那么严重(只是没那么大)。

·END·

程序员的成长之路

路虽远,行则必至

float类型为什么不精确等于0_程序中算钱不能用浮点类型是个什么坑?相关推荐

  1. 传值类型_what?你竟然不知道C#中的方法及参数的类型解析!那还不快来瞅瞅

    前言 哈哈,今天来给大家讲解一下关于C#中方法及参数的几种类型解析,没有看过的朋友,可以仔细的来瞧瞧了! 那么,还是话不多说,直接给大家献上今天的干货. 一.方法中参数的类型 1.in型参数 int ...

  2. Linux下几款C++程序中的内存泄露检查工具

    Linux下编写C或者C++程序,有很多工具,但是主要编译器仍然是gcc和g++.最近用到STL中的List编程,为了检测写的代码是否会发现内存泄露,了解了一下相关的知识. 所有使用动态内存分配(dy ...

  3. 在WinForm程序中嵌入ASP.NET

    现在的流行趋势是桌面程序Web化,Web程序桌面化,呵呵.最终目标就是你中有我,我中有你.例如MSN Explorer就是一个很好的展示,让用户在使用的时候分不清什么时候是在本地什么时候是在网络.而这 ...

  4. 在WinForm程序中嵌入ASP.NET[转]

    在WinForm程序中嵌入ASP.NET 现在的流行趋势是桌面程序Web化,Web程序桌面化,呵呵.最终目标就是你中有我,我中有你.例如MSN Explorer就是一个很好的展示,让用户在使用的时候分 ...

  5. IEEE-754单精度浮点类型存储(每个步骤都有画图,清晰明了,通俗易懂)

    IEEE-754标准单精度浮点类型存储概述 folat(32位单精度浮点类型) java中浮点类型也就是小数类型,浮点类型一共有两种,float和double:float为32位(4字节)单精度浮点类 ...

  6. 《十五》微信小程序中的插件

    插件是对一组 js 接口.自定义组件或页面的封装,用于嵌入到小程序中使用. 插件不能独立运行,必须嵌入在其他小程序中才能被用户使用:而第三方小程序在使用插件时,也无法看到插件的代码.因此,插件适合用来 ...

  7. 根据下面一元二次方程求根公式,计算并输出一元二次方程x2+x-2=0的两个实根,要求精确到小数点后4位。程序中所有浮点数的数据类型均为float..

    根据下面一元二次方程求根公式,计算并输出一元二次方程x2+x-2=0的两个实根,要求精确到小数点后4位.程序中所有浮点数的数据类型均为float.. 输出格式: "x1=%.4f\n&quo ...

  8. mysql中的double类型_MySQL中float、double、decimal三个浮点类型的区别与总结!

    作者:极客小俊 一个专注于web技术的80后 我不用拼过聪明人,我只需要拼过那些懒人 我就一定会超越大部分人! CSDN@极客小俊,原创文章, B站技术分享 个人博客: cnblogs.com 前端h ...

  9. 《Python 3程序开发指南(第2版•修订版)》——2.3 浮点类型

    本节书摘来自异步社区<Python 3程序开发指南(第2版•修订版)>一书中的第2章,第2.3节,作者[英]Mark Summerfield,王弘博,孙传庆 译,更多章节内容可以访问云栖社 ...

最新文章

  1. sparkcore分区_Spark学习:Spark源码和调优简介 Spark Core (二)
  2. 传智C++课程笔记-1
  3. Android studio 关于SQlite数据库导出,创建数据库、表以及如何查看操作
  4. 这样设计是否更好些~仓储接口是否应该设计成基础操作接口和扩展操作接口
  5. StorefrontModule和B2CStorefrontModule的区别
  6. 华为笔记本Win11更新时由于驱动问题引起蓝牙鼠标经常断开问题解决方法
  7. layui的checkbox示例
  8. Python(4)--Pycharm安装、使用小技巧
  9. 舒适的路线(codevs 1001)
  10. 【资源】史上最全数据集汇总
  11. java 对象引用传递
  12. Hbase数据模型入门
  13. Node.js丶Stream使用及常用方法
  14. 致远项目管理SPM系统案例:华仁药业股份有限公司合同管理
  15. 2021年常规赛NBA球员数据分析
  16. 世界上最神奇的网站收录--不是最无聊就是最有意思
  17. spring cloud 复杂类型 FeignClient 避免linkedHashMap
  18. python 赌场掷骰子游戏
  19. 从新手到熟练,怎么学好Zbrush?
  20. IIS6 + Resin3.1.x 的不爽之处

热门文章

  1. 源码解读 Spring Boot Profiles
  2. 1 张图,拆解阿里 P8高级架构师必会技术栈!
  3. 开源高性能异步网关:Soul
  4. Android不使用支持库请求运行时权限
  5. css订单导航栏横线动画,小程序 纯css 实现tab导航栏下划线跟随动画
  6. vs 编译android so
  7. Tracer cannot set value trace for type None. Supported types are tensor, tensor list, and tuple
  8. python--numpy pad函数使用
  9. java数组与字符串互转
  10. c++并行计算库TBB和PPL的基本用法