当前位置: 首页 > 知识库问答 >
问题:

浮点数和双精度值不同

丁业
2023-03-14

我不明白为什么浮点值与双精度值不同。从下面的示例来看,对于相同的操作,float 提供的结果似乎与双精度型不同:

public class Test {

    public static void main(String[] args) {
        double a = 99999.8d;
        double b = 99999.65d;
        System.out.println(a + b);

        float a2 = 99999.8f;
        float b2 = 99999.65f;
        System.out.println(a2 + b2);
    }
}

输出:

199999.45
199999.44

你能解释一下float和double之间的区别吗?

共有3个答案

赵夕
2023-03-14
public class Main {

    public static void main(String[] args) {
        float  a=12.6664287277627762f;
        double b=12.6664287277627762;

        System.out.println(a);
        System.out.println(b);
    }
}

输出:

12.666429
12.666428727762776

浮点数可以处理大约 7 个小数位。双精度可以处理大约 16 个小数位。

姜晨
2023-03-14

你能解释一下float和double之间的区别吗?

当然。假设你有两种十进制类型,一种有五个有效数字,一种有十个。

对于每种类型,您将使用什么值来表示pi?在这两种情况下,你都试图得到一个你不能精确表示的数字——但是你不会得到相同的值,不是吗?

浮点数双精度型是相同的 - 两者都是二进制浮点类型,但双精度浮点数更精确。

段干楚青
2023-03-14

浮点数是 32 位 IEEE 754 浮点数。

双精度是64位IEEE 754浮点数。

所以这只是一个精度问题,因为8和.65这两个分数部分都没有终止的二进制表示,所以存在一些舍入错误。double精度更高,因此舍入误差略小。

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

 类似资料:
  • 问题内容: 如何使用正则表达式从字符串中提取双精度值。 问题答案: 这是简单的方法。请勿将regex用于内置类型。

  • 问题内容: 如何使用正则表达式从字符串中提取双精度值。 问题答案: 是简单的方法。请勿将regex用于内置类型。

  • 问题内容: 是否有比浮点精度更好的数据类型? 问题答案: 小数数据类型 与基于硬件的二进制浮点数不同,十进制模块具有用户可更改的精度(默认为28位),可以与给定问题所需的精度一样大。 如果您对性能问题感到困扰,请查看GMPY

  • 单精度浮动值和双精度浮动值有什么区别?

  • 本文向大家介绍C#浮点,双精度,十进制,包括了C#浮点,双精度,十进制的使用技巧和注意事项,需要的朋友参考一下 示例 浮动 float是.NET数据类型的别名System.Single。它允许存储IEEE 754单精度浮点数。存在此数据类型mscorlib.dll,每个C#项目在创建它们时都会隐式引用该数据类型。 大致范围:-3.4×10 38至3.4×10 38 十进制精度:6-9个有效数字 记

  • 问题内容: 我有这个问题,我必须将公里转换成英里。我是一个新手程序员,所以请耐心等待。 到目前为止,这是我的代码: 它给我一个错误,说: 问题答案: 您正在尝试将a 设置为变量 要修复,请更改此行 至