`

Java中的float 和 double数据精度问题(一)

阅读更多
1.float和double型,的底层实现是二进制的。十进制中的一个有限位数小数,转换成二进制就不一定是有限位数了,一旦位数超过的float和double型的位数宽度,就会出现“精度溢出”。所以float和double型是为了科学计算而设计的,并不适合精确的十进制计算.

   就像一个十进制的小数,要不断地乘以2取整,但在这个过程中可能会一直循环下去,这就造成了数据的不精确。

   所以在必须要求数据的精确度时,不能使用float和double.
2.BigDecimal类可解决计算精度问题
例:对一个小数进行指定位数的四舍五入:

BigDecimal bd = new BigDecimal("0.9851095");
BigDecimal one = new BigDecimal("1");
System.out.println(bd.divide(one, 3, BigDecimal.ROUND_HALF_UP));
BigDecimal中还有很多相关的数值之间的计算方法,以及精确到的位数和四舍五入等。
分享到:
评论

相关推荐

    详解java中float与double的区别

    float 和 double 是 Java 中两种基本数据类型,都是用来表示实数的,但是它们有很大的区别。float 是单精度类型,精度是 8 位有效数字,取值范围是 10 的 -38 次方到 10 的 38 次方,float 占用 4 个字节的存储空间...

    解决java数值范围以及float与double精度丢失的问题

    解决java数值范围以及float与double精度丢失的问题 Java中的数值范围和浮点数精度问题是许多开发者经常遇到的问题。下面我们将详细探讨Java中的数值范围、float和double类型的精度问题,并且提供解决方案。 一、...

    float和double

    float和double浮点数类型的精度和范围解析 浮点数类型float和double是编程语言中最常用的数值类型,但是它们...因此,在商业计算中,我们应该使用java.math.BigDecimal来避免精度问题,而不是使用float和double类型。

    Java 精确计算-double-float-String

    标题中的"Java 精确计算 - double-float-String"指向的是Java中处理浮点数(double和float)以及字符串表示的数值时可能遇到的精度问题,以及如何通过特定方法实现精确计算。描述中提到的链接指向了一个具体的博客...

    float、double类型介绍.zip

    标题中的“float、double类型介绍”指的是在编程语言中,如C++、Java或Python等,用于表示浮点数的数据类型。浮点数是计算机科学中用来表示小数的一种方式,因为它们不是精确的,而是近似的。浮点类型通常分为两种...

    Java与MySQL中小数保存问题解析.pptx.pptx

    在Java和MySQL中,处理小数时需要注意一系列与精度、数据类型选择以及运算准确性相关的问题。首先,让我们深入了解Java中小数的保存方式...在开发过程中,应充分考虑这些因素,以避免潜在的精度误差和数据不一致问题。

    Java实现IEE754 Float类型数据

    本文将详细探讨如何使用Java语言来实现IEEE 754标准中的单精度浮点数(Float)的解析过程。 #### IEEE 754标准简介 IEEE 754标准定义了浮点数的二进制格式以及运算规则。对于单精度浮点数来说,它占用32位(4字节...

    float型和double型数据的存储方式1

    本文主要探讨了浮点类型数据,即float和double在内存中的表示方式,以及由此产生的精度问题。 首先,浮点类型数据有两种主要形式:单精度(float)和双精度(double)。float在内存中占用32位,而double占用64位。这...

    Java中double类型下出现精度计算错误情况下出力方法

    Java中的简单浮点数类型float和double不能够进行运算,因为大多数情况下是正常的,但是偶尔会出现如上所示的问题。这个问题其实不是JAVA的bug,因为计算机本身是二进制的,而浮点数实际上只是个近似值,所以从二进制...

    16位转浮点型float,MODBUS 32位转浮点型float 64位转双浮点型double

    在IT领域,数据类型转换是常见的操作,尤其是在通信协议如MODBUS中,为了高效传输和正确解析数据,需要将数值转换成不同的格式。本篇主要介绍16位、32位以及64位数据如何转换为浮点型(float)和双浮点型(double)...

    Java数据类型和MySql数据类型对应一览

    在 Java 中,数字类型对应的是 java.lang.Integer、java.lang.Long、java.lang.Float、java.lang.Double 等类型。在 MySql 中,数字类型对应的是 INTEGER、BIGINT、FLOAT、DOUBLE 等类型。其中,INTEGER 类型用于...

    java-16进制4字节转Float

    在Java中,浮点数有两种主要形式:单精度浮点数(float)和双精度浮点数(double),它们分别使用32位和64位来存储。 1. **字节序**:在进行16进制到浮点数的转换时,必须考虑到字节序,即字节在内存中的排列顺序。...

    Java数据类型和MySql数据类型对应表

    在 Java 编程中,了解 Java 数据类型和 MySql 数据类型的对应关系非常重要。这是因为在 Java 应用程序中,我们经常需要与数据库进行交互,而 MySql 是一种常用的关系数据库管理系统。在本文中,我们将详细介绍 Java ...

    Mysql、orcale 中的数据类型与java中的数据类型对应表.pdf

    在 Java 中,对应 MySQL 的数值类型可以使用基本数据类型,例如 int、long、float 和 double 等。对应日期时间类型可以使用 java.util.Date 和 java.sql.Date 等。对应字符串类型可以使用 String 等。 理解 MySQL ...

    关于java的数值精度

    java程序中数值的精度问题,float、double容易产生精度数值问题,不适合精度计算,而bigdecimal正好解决这一问题

    Java中数据类型和MYSQL中数据类型的对比

    FLOAT 和 DOUBLE 用于存储近似数值,与 Java 中的浮点类型相对应。BIT 类型用于存储位字段值,适用于二进制数据。 2. 日期和时间类型:MySQL 的日期和时间类型包括 DATETIME、DATE、TIMESTAMP、TIME 和 YEAR。...

    Java中几种常用数据类型之间转换的方法

    在 Java 中,可以使用 parseInt()、parseFloat()、parseLong() 和 parseDouble() 方法将 String 类型的变量转换为 int、float、long 和 double 类型的变量。例如: String intstring = "10"; String floatstring = ...

    Java数据类型操作包含转换代码实例.rar

    通过这些实例,初学者可以更直观地理解Java中数据类型转换的规则和潜在问题。在学习过程中,务必注意检查转换后的数据是否符合预期,并理解不同类型之间的精度差异。 总之,Java数据类型的转换是编程基础中的重要一...

    C#和java数据类型的等价类型

    本文将对C#和Java中的数据类型进行比较和分析,帮助开发者更好地理解和使用这些数据类型。 一、布尔类型 在C#和Java中,布尔类型用于存储 true 或 false 两个值。C#中的布尔类型对应Java中的boolean类型。它们都...

    Oracle9i数据类型Java数据类型Schema类型对比.doc

    - Java 的基本数据类型如 byte, short, int, long, float, double, boolean 与 Oracle9i 中的某些数字类型相对应。 - String 类型用于存储文本,与 Oracle9i 中的 CHAR 和 VARCHAR2 类型匹配。 - Date 和 ...

Global site tag (gtag.js) - Google Analytics