精华内容
下载资源
问答
  • 双精度和单精度

    千次阅读 2018-10-04 11:02:07
    双精度单精度表示的位数大 精确的位数多, 简单地说, foat表示的小数点位数少,double能表示的小数点位数多! 如 float: 1.0001 double:1.0000000001Float为单精度,内存中占4个字节,有效数位是7位(因为有正负,...

    双精度比单精度表示的位数大 精确的位数多,

    简单地说, foat表示的小数点位数少,double能表示的小数点位数多!

    如 float: 1.0001 double:1.0000000001Float为单精度,内存中占4个字节,有效数位是7位(因为有正负,所以不是8位),在我的电脑且VC++6.0平台中默认显示是6位有效数字

    double为双精度,占8个字节,有效数位是16位,Float 范围:3.4e + / - 38 (7 个数字(7digits)Double范围: -1.79769313486232E308 到 -4.94065645841247E-324,而正数的时候是从 4.94065645841247E-324 到 1.79769313486232E308

    展开全文
  • 所以我目前正在开发一个将IEEE-754单精度和双精度浮点数转换为十进制数的程序 . 该程序有一个 java.lang.NumberFormatException 抛出 . 我希望有人向我解释为什么会抛出它以及我应该如何修复它 .//This is the ...

    所以我目前正在开发一个将IEEE-754单精度和双精度浮点数转换为十进制数的程序 . 该程序有一个 java.lang.NumberFormatException 抛出 . 我希望有人向我解释为什么会抛出它以及我应该如何修复它 .

    //This is the method being used for the IEEE-754 double-precision to decimal

    //line 5 is where the error is thrown

    1 double deciFinal;

    2 System.out.println("What IEEE-754 double precision floating-point representsation will you like to input?");

    3 ieee754 = input.nextLine();

    4 ieee754 = ieee754.trim();

    5 deciFinal = Double.longBitsToDouble(Long.parseLong(ieee754,2));

    6 System.out.println(deciFinal);

    //This is the method being used for the IEEE-754 single-precision to decimal

    //Line 5 is also where the error is being thrown.

    1 int binIeee;

    2 float deciFinal;

    3 System.out.println("What IEEE-754 single precision floating-point representsation will you like to input?");

    4 ieee754 = input.nextLine();

    5 deciFinal = Float.intBitsToFloat(Integer.parseInt(ieee754, 2));

    6 System.out.println(deciFinal);

    如果您想参考它以帮助我自己了解更多,这是我的完整代码

    import java.util.Scanner;

    /**

    *

    * @author Edwin

    */

    public class DecimalToIEE754 {

    public static void main(String[]args){

    int choice;

    Scanner input = new Scanner(System.in);

    do{

    double deciNum;

    String ieee754 = " ";

    int bitsVal;

    String bitsString;

    System.out.println("Hello Welcome to the Decimal and IEEE-754 converter");

    System.out.println("Please select the number that correspondes with the conversion you will like:"

    + "\n 1) Convert decimal number to IEEE-754 Single Precision Floating-Point Representation"

    + "\n 2) Convert decimal number to IEEE-754 Double Precision Floating-Point Representation"

    + "\n 3) Convert IEEE-754 Single Precision Floating-Point Representation to decimal number"

    + "\n 4) Convert IEEE-754 Double Precision Floating-Point Representation to decimal number "

    + "\n 0) Exit Converter");

    choice = input.nextInt();

    if(choice == 1)

    {

    System.out.println("What decimal number will you like to convert?");

    deciNum = input.nextDouble();

    float f = (float)deciNum;

    bitsVal = Float.floatToIntBits(f);

    bitsString = Integer.toBinaryString(bitsVal);

    System.out.println(bitsString);

    }

    if(choice == 2)

    {

    System.out.println("What decimal number will you like to convert?");

    deciNum = input.nextDouble();

    bitsString = Long.toString(Double.doubleToLongBits(deciNum), 2);

    System.out.println(bitsString);

    }

    if(choice == 3)

    {

    int binIeee;

    float deciFinal;

    System.out.println("What IEEE-754 single precision floating-point representsation will you like to input?");

    ieee754 = input.nextLine();

    **deciFinal = Float.intBitsToFloat(Integer.parseInt(ieee754, 2));**

    System.out.println(deciFinal);

    }

    if(choice == 4)

    {

    double deciFinal;

    System.out.println("What IEEE-754 double precision floating-point representsation will you like to input?");

    ieee754 = input.nextLine();

    ieee754 = ieee754.trim();

    **deciFinal = Double.longBitsToDouble(Long.parseLong(ieee754,2));**

    System.out.println(deciFinal);

    }

    }while (choice != 0);

    }

    }

    一旦我为Ieee-754输入3或4转换为十进制,就会出现错误 . 它不允许我输入Ieee-754号码 . 完整的错误是:

    Exception in thread "main" java.lang.NumberFormatException: For input string: ""

    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)

    at java.lang.Integer.parseInt(Integer.java:504)

    at DecimalToIEE754.main(DecimalToIEE754.java:53)

    Java Result: 1

    展开全文
  • 单精度(Single)和双精度(Double)数据类型是VB6里的两种浮点类型;...双精度和单精度的差别 大多数程序员都知道双精度类型容纳的数值要比单精度的大,而双精度的类型同时要求更大的存储空间--即8个字节,而不是4

    单精度(Single)和双精度(Double)数据型是VB6里的两种浮点类型;它们被用来保存带有小数的数值。小数的位数可以变化(所以名字叫"浮点"),因为小数点的位置可以变化。例如:

    1.23456

    12.3456

    123.456

    双精度和单精度的差别

    大多数程序员都知道双精度类型容纳的数值要比单精度的大,而双精度的类型同时要求更大的存储空间--即8个字节,而不是4个字节。

    双精度和单精度的最大不同之处是数值能够表达的精度。例如,单精度类型的精度被限制为7位;所以,下面这些值都是单精度类型:

    1.23

    123999

    79.098

    但是,如果你把123456789保存为一个单精度类型,那么它就会被四舍五入为123456800。类似的,1.23456789会被缩减为1.234568。

    相比而言,双精度类型可以实现15位的精度。所以对于需要大量数值计算的程序员来说,就要使用双精度类型,否则精度就会出问题。

    :Visual Basic的帮助文档谈到了一个叫做Decimal的数据类型,它的精度是28位。这听起来很不错,但是不幸的是,它从来都没有被真正实现过。

    展开全文
  • Java语言也提供了针对小数的存储类型,分别是float类型double类型。Java语言的浮点类型有两种不同的表示形式:十进制数科学计数法。十进制数形式,由数字小数点组成,且必须有小数点,如0.123、12.85、26.98等;...

    前面介绍了整型数据类型,用于存储整型数据。现实问题中不但有整型数值,还有小数。Java语言也提供了针对小数的存储类型,分别是float类型和double类型。

    Java语言的浮点类型有两种不同的表示形式:十进制数和科学计数法。十进制数形式,由数字和小数点组成,且必须有小数点,如0.123、12.85、26.98等;科学计数法形式,如:2.1E5、3.7e-2等。其中e或E之前必须有数字,且e或E后面的指数必须为整数。

    科学计数法

    一种简化计数的方法,对于位数较小的数值,科学计数法没有什么优势,但对于位数较多的数值其计数方法的优势就非常明显了。例如:光的速速是300,000,000米/秒,全世界人口数大约是6,100,000,000。类似光的速度和世界人口数这样大数值的数,读、写都很不方便,仔细观察上面的两个数值,光的速度可以写成3*108,全世界人口数可以写成6.1*109。这种计数方法就是科学计数法,用Java语言科学计数法表示光速是3E8,世界人口数大约是6.1E9。

    一个较大的数值(>0)可以用下面的方式来表示:

    a * 10n (1<=a<10,n为整数)

    其中,a是该数值的有效位数,有效位数从左边第一个不是0的数起,到末尾数字为止,所有的数字(包括0,科学计数法不计10的n次方),称为有效数字。例如:光速是3E8,其有效数字是1位,值是3;世界人口数大约是6.1E9,其有效数字是2位,值是6.1。

    n是该数值的整数部分减1的正整数。

    一个较小的数值(<0)可以用下面的方式来表示:

    a * 10-n (1<=a<10,n为整数)

    a的取值同上面相同,n的取值为原数中左边第一个不为0的数字前面所有的0的个数(包括小数点前面的0)。

    在Java语言中,浮点类型有float和double两种,分别代表单精度和双精度的数值。精度是指描述一个数值的准确程度,在数学运算中,经常会用到近似数,近似数与原数值非常相近,但又不完全符合原数值,只能说在某种程度上近似。精度与近似数相似,也是用一个与原数值非常相近的数代替原来的数值。

    前面说过存储一个数值所用的字节越多,其精度越高,数值范围也越大。由此看来,精度与存储字节数密切相关,float类型的存储空间是4个字节,其表示的值范围约为10-38到1038,double类型的存储空间是8个字节,其表示的值范围约为10-308到10308,float存储数值的精度和范围要小于double存储数值的精度和范围。因此,float是单精度数值,double是双精度数值。

    94d04bfc3d81ba64fdce14c33affb138.png图 4-6 浮点型变量占用的存储空间

    float变量可按如下方式声明:

    256b0f1e7b993c3d8866e195baa06a9b.png

    double变量可按如下方式声明:

    1db2cfccb2722542e25de9aab7d8785d.png

    数值赋值给float变量时,数值尾部要加上小写“f”或大写“F”声明为float数值,不然编译器会给出“可能损失精度的错误”如下图所示。因为在Java语言中,带小数的数值默认为是double类型,double类型转换为float类型,自然要损失精度了。

    ab6199596c6c322a88c8d91d974d0bf8.png图 4?7 float类型赋值错误

    73640f72de1bd2daadd766ed5847c1c1.png

    在 Java 程序中使用浮点数和小数时,不能假定浮点计算一定产生整型或精确的结果,浮点数不是精确值,使用它们会导致舍入误差。

    061d4cb26eeae9f4fd3570b1deae8305.png

    (1)单精度浮点型占用()字节的存储空间

    A.4

    B.8

    C.2

    D.1

    (2)请填入正确的赋值语句()

    A. float price = 12.35;

    B.float price = 12.35f;

    C.float price = 12.35f

    D.float price = 3.1e2

    (3)36.89用科学计数法表示为()

    A. 3.689e1

    B . 3.689e2

    C. 3.689e0

    D. 36.89e1

    展开全文
  • 双精度单精度和半精度

    万次阅读 多人点赞 2017-11-17 09:56:29
    常用的浮点数有双精度和单精度。除此之外,还有一种叫半精度的东东。 双精度64位,单精度32位,半精度自然是16位了。 半精度是英伟达在2002年搞出来的,双精度和单精度是为了计算,而半精度更多是为了降低数据...
  • 常用的浮点数有双精度和单精度。除此之外,还有一种叫半精度的东东。 双精度64位,单精度32位,半精度自然是16位了。 半精度是英伟达在2002年搞出来的,双精度和单精度是为了计算,而半精度更多是为了降低数据传输...
  • 单精度和双精度的区别

    万次阅读 多人点赞 2019-02-26 16:56:24
    1、单精度和双精度的字节数不同。前者占4个字节;后者占8个字节。 2、单精度和双精度有效数字位数不同。前者为8位;后者为16位。 3、单精度和双精度表示的数的范围不同。前者的数值范围在-3.40E+38 到 +3.40E+...
  • 单精度和双精度问题

    2020-08-24 10:46:54
    一,什么是单精度和双精度 单精度数(float)是指计算机表达实数近似值的一种方式。VB中Single(单精度浮点型)变量存储为 IEEE 32 位(4 个字节)浮点数值的形式,它的范围在负数的时候是从 -3.402823E38 到 -1....
  • c 语言单精度和双精度的区别 c 语言单精度和双精度的区别单精度是这样的格式 1 位符号 8 位指数 23 位小数 双精度是 1 位符号 11 位指数 52 位小数 区别就是它所能存储的数值范围大小不同 双精度变量能存储比单精度...
  • 含义:表明单精度和双精度精确的范围不一样,单精度,也即float,一般在计算机中存储占用4字节,也32位,有效位数为7位;双精度(double)在计算机中存储占用8字节,64位,有效位数为16位。原因:不管float还是double ...
  • 为什么会有精度问题?计算机处理数据都涉及到数据的转换各种复杂运算,比如,不同单位换算,不同进制(如二进制十进制)换算等,很多除法运算不能除尽,比如10÷3=3.3333.。。。。。。无穷无尽,而精度是有限的,3....
  • 单精度和双精度示意

    2018-11-22 14:19:11
    单精度是这样的格式,1位符号,8位指数,23位小数。   双精度是1位符号,11位指数,52位小数。   单精度数的尾数用23位存储,加上默认的小数点前的1位1,2^(23+1) = 16777216。 因为 10^7 &lt; ...
  • 编排 | strongerHuang微信公众号|嵌入式专栏我们学过数学,都知道有理数和无理数,然后在有理数中有一类叫浮点数的...下面就来讲讲关于浮点数中,单精度双精度、多精度和混合精度计算的区别。嵌入式专栏1关于圆周...
  • 为什么会有精度问题?计算机处理数据都涉及到数据的转换各种复杂运算,比如,不同单位换算,不同进制(如二进制十进制)换算等,很多除法运算不能除尽,比如10÷3=3.3333.。。。。。。无穷无尽,而精度是有限的,3....
  • 单精度双精度和半精度浮点格式之间的区别 IEEE 浮点算术标准是用来衡量计算机上以二进制所表示数字精度的通用约定。在双精度格式中,每个数字占用64位,单精度格式占用32位,而半精度仅16位。 要了解其中工作原理...
  • 详细介绍了单精度和双精度、扩展双精度在内存中的存储格式
  • 单精度和双精度数据

    千次阅读 2012-02-10 23:46:25
    单精度和双精度数值类型最早出现在C语言中(比较通用的语言里面),在C语言中单精度类型称为浮点类型(Float),顾名思义是通过浮动小数点来实现数据的存储。这两个数据类型最早是为了科学计算而产生的,他能够给...
  • 精度和双精度浮点数数据类型   C、C++中使用到的单精度浮点数(float)类型和双精度浮点数(double)类型是在IEEE二进制浮点数算术标准(ANSI/IEEE Std 754-1985)中定义的。下面分别从存储格式、内存...
  • 单精度双精度

    2021-03-27 21:50:45
    单精度双精度 %lf 与%f:单精度双精度 学习c语言,在进行实验练习时遇到了单双精度的问题,在这里大家分享下。 问题: 计算某市出租车收费标准下的收费,因为收费标准多样,现定:车费=起步价+超出起步的里程...
  • 计算机程序中的浮点数分为单精度浮点数和双精度浮点数。单精度和双精度精确的范围不一样。计算机里的最基本的存储单位用位(bit)来表示。bit只能用来存储0或1。稍大一点的单位是字节(Byte,简写为B)。再大一级的是千...
  • 大致原因是M40是单精度的浮点数的运算,P4是双精度,在双精度上的计算结果用在单精度上运行,运算精度不一样,所以计算偏差比较大,导致的结果不一致。特别是乘除法的矩阵运算,结果运算偏差会很大。 解决方式是模型...
  • Single-Precision and Double-Precision SolversBoth single-precision and double-precision versions of ANSYSFLUENT are available on all computer platforms. For most cases, thesingle-precision solver will...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,014
精华内容 1,205
关键字:

双精度和单精度