没——问题 发表于 2008-11-14 21:49:01

请教 long double

书上说是 1.7e-308~1.7e+308(长度64bit)
google计算器能显示的数是
1.79769313*10^308

请问这个1.79769313是怎么来的?

(从longdouble的存储结构上)

gxqcn 发表于 2008-11-15 08:17:23

首先给楼主更正一下:值域范围达到 1.7E+308 的是double 型,它是8字节;
long double 是10字节的,最大可到 1.1E+4932
这是 International Electrotechnical Commission(IEC) 在1989年定义的二元浮点算术标准(IEC60559)
C99 标准支持上述 IEC 浮点标准。不过早期的编译器把long double视同为double。

楼主应该查阅一下浮点数在计算机里的存储格式以及规则。

liangbch 发表于 2008-11-15 10:24:35

VC编译器也把long double 视为double,也就是说在vc中使用long double并不能提高精度

sunwukong 发表于 2008-11-15 10:26:15

2^1024=1.797693134862315907729305190789e+308


1.79769313 就是这么来的


(用 WINDOWS 自带的计算器算的)

没——问题 发表于 2008-11-15 11:01:48

非常有用,非常感谢

无心人 发表于 2008-11-15 11:16:00

:)

是不是目前的编译器都支持
long double?
或者还是
和平台相关的

mathe 发表于 2008-11-15 12:09:19

支持,但是不同平台下精度可能不同

无心人 发表于 2008-11-15 14:37:06

反正
128精度的标准快出来了
80位的早晚退休
呵呵

仙剑魔 发表于 2008-11-26 23:28:16

long double ?
VC   8byte
BCB10byte
G++   12byte

gxqcn 发表于 2008-11-27 07:41:21

12 byte 估计是出于字节对齐需要吧,
精度不会再提高,
因为CPU内部的寄存器存储容量是有限的。
页: [1]
查看完整版本: 请教 long double