我是靠谱客的博主 还单身向日葵,最近开发中收集的这篇文章主要介绍double的精度与范围,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

float与double的范围和精度

1. 范围

2.  精度

3.Oracle中Number类型

在Oracle中Number类型可以用来存储0,正负定点或者浮点数,可表示的数据范围在

定点数的精度(p)和刻度(s)遵循以下规则:

4.验证

5.结论

number 的总长度是40位,其中可能包括:小数点,负号位。

select to_char(func_test(-987.1234567891234567891234567891234567891234)) from dual;


--------------------------------------------------------------------------------------------

双精度浮点数(double)是计算机使用的一种数据类型。比起单精度浮点数(float),双精度浮点数(double)使用 64 位(8字节) 来存储一个浮点数。 它可以表示十进制的15或16位有效数字,其可以表示的数字的绝对值范围大约是。

目录

   [隐藏] 
  • 1 格式
    • 1.1 符号
    • 1.2 指数
    • 1.3 尾数
    • 1.4 小结
  • 2 例子
  • 3 参考文献
  • 4 参阅

格式[编辑]

sign bit(符号): 用来表示正负号

exponent(指数): 用来表示次方数

mantissa(尾数): 用来表示精确度

符号[编辑]

0代表数值为正,1代表数值为负。

指数[编辑]

类比整型使用所有位为0的数字表示数值“0”,双精度浮点数表示0时指数部分也为0。若如此,便可能产生冲突:比如全0的数字可能表示“0”,也可能表示(参考下文“尾数”的解释)。于是此处规定,指数使用0x3ff(十进制1023)的偏移量,便有以下规则:

  • 0x000:用来代表0(mantissa=0)或下溢数(mantissa不为0)。
  • 0x7ff:用来代表无穷大(mantissa=0)或NaN(mantissa不为0)。
  • 其他:代表2的(exponent-0x3ff)次方。

尾数[编辑]

在二进制的“科学记号”,数字被表示为:

为了最大限度提高精确度,可以要求尾数规格化,把尾数处理到大于等于1而小于2的区间内,便可省去前导的“1”。例如:

 二进制的
 可以规格化为 ,存储时尾数只需要存储1101即可
 二进制的
 可以规格化为 ,存储时尾数只需要存储10011即可

于是,可得以下形式:

小结[编辑]

根据以上的叙述,一个双精度浮点数所代表的数值为: 

例子[编辑]

 3ff0 0000 0000 0000
= 1
 c000 0000 0000 0000
= -2
 7fef ffff ffff ffff
~ 1.7976931348623157 x 10308 (Max Double)
 3fd5 5555 5555 5555
~ 1/3
 0000 0000 0000 0000
= 0
8000 0000 0000 0000
= -0
 7ff0 0000 0000 0000
= 無限大
 fff0 0000 0000 0000
= 負無限大

最后

以上就是还单身向日葵为你收集整理的double的精度与范围的全部内容,希望文章能够帮你解决double的精度与范围所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(158)

评论列表共有 0 条评论

立即
投稿
返回
顶部