JAVA基础中关于double进制问题的解析

简介:
近日在群中看到一个小兄弟求助:
int a = 58;double b = 0.35;
double c = a*b;
为什么等于 20.29999999999997
而不是等于 20.3
我在计算机思索一,是啊为什么呢?学习java两年这个问题突然不知怎么回答?经过再三考虑将我的想法发表出来,请大家一起讨论!
1. 首先要明白计算机只识别01
2. 因为在java里面浮点数的表示是根据IEEE754标准来表示的,


一般数符位(s1位,阶码(E)根据浮点数的类型不同占的位数不同,尾数(M)也是


根据类型不同占的位数不一样,所以一个计算机能够表示的浮点数的总位数长度是有限的


一般32位、64位、80位。


3. 要明白小数在转换为二进制的时候有些小数是无法完全转换的只能取近似值。


4. 如0.35转为二进制为0.01100..........这个二进制再转10进制是无法表示为0.35的只能是无限接近0.35.



这就是所谓的精度丢失,是因为小数在转二进制时有些小数是转不清的,丢去了一部分。

所以总结出来出来:再牛逼的计算机也只认识01











本文转自 小夜的传说 51CTO博客,原文链接:http://blog.51cto.com/1936625305/1140059,如需转载请自行联系原作者
目录
相关文章
|
5天前
|
安全 前端开发 Java
10:基于Servlet模拟用户登录功能的实现与解析-Java Web
10:基于Servlet模拟用户登录功能的实现与解析-Java Web
20 3
|
7天前
|
供应链 Java API
Java 8新特性解析及应用区块链技术在供应链管理中的应用与挑战
【4月更文挑战第30天】本文将深入探讨Java 8的新特性,包括Lambda表达式、Stream API和Optional类等。通过对这些新特性的详细解析和应用实例,帮助读者更好地理解和掌握Java 8的新技术。
|
7天前
|
安全 Java API
Java 8新特性深度解析
【4月更文挑战第30天】本文将深入探讨Java 8的新特性,包括Lambda表达式、Stream API、Optional类等,以及这些新特性如何改变我们编写Java代码的方式。
|
8天前
|
算法 Java
【Java探索之旅】运算符解析 算术运算符,关系运算符
【Java探索之旅】运算符解析 算术运算符,关系运算符
16 0
|
8天前
|
存储 Java 大数据
JAVA:编程的艺术与实战解析
JAVA:编程的艺术与实战解析
18 2
|
10天前
|
设计模式 Java
Java 设计模式:工厂模式与抽象工厂模式的解析与应用
【4月更文挑战第27天】设计模式是软件开发中用于解决常见问题的典型解决方案。在 Java 中,工厂模式和抽象工厂模式是创建型模式中非常核心的模式,它们主要用于对象的创建,有助于增加程序的灵活性和扩展性。本博客将详细介绍这两种模式的概念、区别以及如何在实际项目中应用这些模式。
15 1
|
10天前
|
并行计算 Java API
【专栏】Java中的Lambda表达式应用与实例解析
【4月更文挑战第27天】Java 8的Lambda表达式增强了函数式编程,允许以匿名函数形式传递行为。其基本语法`(params) -> expression/statements`,类型由参数推断,可引用final或effectively final的外部变量。Lambda广泛应用于集合操作(如Stream API)、并行流处理和GUI事件处理,简化代码并提高效率。通过实例,展示了Lambda在集合筛选、并行计算和事件处理中的应用,从而提高开发质量和效率。
|
Java
在java中,怎样把一个double数转换为字符串时,不用科学计数法表示。
在java中,怎样把一个double数转换为字符串时,不用科学计数法表示。
460 0
|
1天前
|
安全 Java
Java中的并发编程:理解并发性与线程安全
Java作为一种广泛应用的编程语言,在并发编程方面具有显著的优势和特点。本文将探讨Java中的并发编程概念,重点关注并发性与线程安全,并提供一些实用的技巧和建议,帮助开发人员更好地理解和应用Java中的并发机制。
|
1天前
|
Java
Java中的多线程编程:基础知识与实战技巧
【5月更文挑战第6天】多线程编程是Java中的一个重要特性,它允许我们在一个程序中同时执行多个任务。本文将介绍Java多线程的基础知识,包括线程的创建、启动、同步和通信,以及如何在Java中实现多线程编程。通过实例代码和解析,帮助读者深入理解Java多线程编程的概念和应用。

推荐镜像

更多