0 0

float 和double的区别5

public class Float {

  double i=2.0;
double j=1.1;
float m=2.0f;
float n=1.1f;

public void subtract()
{ System.out.println(i-j);
  System.out.println(m-n);
  System.out.print(2.0-1.1);
}

public static void main(String agr[])
{

Float f=new Float();
f.subtract();

}

}

行运结果为什么是这样的?
float 和double的区别

0.8999999999999999
0.9
0.8999999999999999

OO 
2009年10月11日 21:35

4个答案 按时间排序 按投票排序

0 0

采纳的答案

JAVA解惑一书:

引用
public class Change{
public static void main(String args[]){
System.out.println(2.00 - 1.10);
}
}
你可能会很天真地期望该程序能够打印出0.90,但是它如何才能知道你想要打
印小数点后两位小数呢?
如果你对在Double.toString 文档中所设定的将double 类型的值转换为字符串
的规则有所了解,你就会知道该程序打印出来的小数,是足以将double 类型的
值与最靠近它的临近值区分出来的最短的小数,它在小数点之前和之后都至少有
一位。因此,看起来,该程序应该打印0.9 是合理的。
这么分析可能显得很合理,但是并不正确。如果你运行该程序,你就会发现它打
印的是0.8999999999999999
问题在于1.1 这个数字不能被精确表示成为一个double,因此它被表示成为最
接近它的double 值。该程序从2 中减去的就是这个值。遗憾的是,这个计算的
结果并不是最接近0.9 的double 值。表示结果的double 值的最短表示就是你所
看到的打印出来的那个可恶的数字。
更一般地说,问题在于并不是所有的小数都可以用二进制浮点数来精确表示的。

2009年10月12日 08:34
0 0

这个精度问题真的没必要去研究,实际上不会使用这种浮点数进行计算的
都是用BigDecimal

2009年10月12日 01:30
0 0

double和float都是用来存储浮点数,不同的是使用的字节长度不一样,float用的是4个字节,而double用的是8个字节,所以有效位不同。

2009年10月11日 22:39
0 0

我的理解是
第一个和第三个都是double间的运算,double是不能进行精确计算的
第二个是float间的运算,计算后的结果都会转化为float

2009年10月11日 21:50

相关推荐

    float与double的范围和精度

    float与double的范围和精度 float和double是两种常用的浮点数类型,它们的范围和精度是由其内部存储格式决定的。了解float和double的范围和精度对于编程和数据处理非常重要。 1. 范围 float和double的范围是由...

    float、double类型介绍.zip

    浮点类型通常分为两种主要类型:float和double。 float是单精度浮点数,它在IEEE 754标准中占据32位,包括1位符号位、8位指数位和23位尾数。这使得float能够表示大约6到7位十进制的小数精度。尽管float占用较少的...

    基于C++浮点数(float、double)类型数据比较与转换的详解

    在C++编程语言中,浮点数类型包括`float`和`double`,它们用于表示非整数值。本文主要探讨的是这两个类型的数据在比较和转换过程中的一些关键知识点。 首先,浮点数在内存中的存储机制遵循IEEE 754标准,不同于整型...

    float和double

    float和double浮点数类型的精度和范围解析 浮点数类型float和double是编程语言中最常用的数值类型,但是它们的精度和范围却是程序员需要注意的重要问题。本文将详细解释float和double的范围和精度,及其在商业计算...

    MySQL中Decimal类型和Float Double的区别(详解)

    其区别在于,float,double等非标准类型,在DB中保存的是近似值,而Decimal则以字符串的形式保存数值。 float,double类型是可以存浮点数(即小数类型),但是float有个坏处,当你给定的数据是整数的时候,那么它就...

    详解java中float与double的区别

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

    float_double.c

    将32bit的float型数据 转换为 64bit的double类型存储在内存中,跨平台可用。解决C51等平台double类型为32bit存储的问题。

    十六进制(HEX)和浮点类型(float、double)转换工具

    而浮点类型,如float和double,是用于存储小数的数值类型,广泛应用于科学计算、图形处理等领域。了解和掌握十六进制与浮点类型的转换是每一位IT专业人员的基本技能。 十六进制是一种逢16进1的计数系统,使用16个...

    C# 按照IEEE 754标准对Float和Double类型进行转换

    本话题主要聚焦于如何根据IEEE 754标准来处理和转换浮点数类型,包括`float`和`double`。IEEE 754是国际上广泛采用的一个标准,用于定义浮点数的存储格式,它规定了二进制浮点数的表示方法,包括正负号、指数和尾数...

    HEX-Float转换工具 16进制转成float 或double类型数据的一个小工具

    在计算机中,根据IEEE 754标准,float和double类型的浮点数有不同的存储格式。float通常占用32位(4字节),其中1位用于符号,8位用于指数,23位用于尾数;double则占用64位(8字节),其中1位用于符号,11位用于...

    float、double类型小数转换16进制

    float、double类型转换16进制工具

    C语言中floatdouble的区别[参照].pdf

    "C语言中float和double的区别" 在C语言中,float和double是两种基本的浮点数类型,它们之间的区别在于它们的精度、内存占用和表示范围。 float是一种单精度浮点数类型,占用4个字节的内存空间,有效数字位数为6-7位...

    C语言中floatdouble的区别.pdf

    "C语言中float和double的区别" 在C语言中,float和double是两个基本的浮点类型,它们在存储方式、精度、数值范围等方面存在着明显的差异。 首先,float类型是单精度浮点数,它占用4个字节的内存空间,有效数字为6-...

    float double精度的详细解释

    ### float与double精度详解 #### 一、浮点数的基础概念 ...了解`float`和`double`的区别及其内部表示方式,有助于开发者在选择合适的数据类型时做出正确的决策,尤其是在涉及高精度计算或大范围数值时尤为重要。

    浮点数的存储结构(double和float)

    这篇内容将深入探讨浮点数的存储结构,特别是关于`double`和`float`类型,以及相关的IEEE 754标准。 首先,我们来了解一下`float`和`double`这两个浮点数类型。在C/C++等编程语言中,`float`通常占用32位,而`...

    float和double类型数据在内存中的存储方法

    在计算机科学中,浮点数(如`float`和`double`)的表示方式是至关重要的,因为它们用于处理各种科学计算、图形处理以及工程应用中的小数运算。本篇文章将详细探讨`float`和`double`类型数据在内存中的存储方法,以及...

    float_double存储问题

    float 和 double 是 C 语言和 C# 语言中最常用的浮点类型,它们分别使用单精度和双精度来存储浮点数据。 float 数据占用 32bit,而 double 数据占用 64bit。 在 IEEE 的规范下,float 遵从的是 IEEE R32.24,而 ...

    十进制和十六进制转换成float、double数据

    本文将详细讲解如何将十进制和十六进制数值转换为浮点数(float)和双精度浮点数(double)。 首先,让我们从十进制开始。十进制是我们日常生活中最常用的计数系统,其基数为10。在MATLAB中,我们可以通过直接输入...

    6进制与浮点数(包括float和double)互转、十进制与16进制互换

    本文将深入探讨标题和描述中提及的“6进制与浮点数(包括float和double)互转”以及“十进制与16进制互换”的知识点。 首先,我们需要明确一点:通常所说的6进制可能是误指,因为常见的进制系统主要是二进制(bin)...

Global site tag (gtag.js) - Google Analytics