/相 发表于 2024-1-13 09:11:23

请教 long double

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

请问这个1.79769313是怎么来的?

(从longdouble的存储结构上)

evuojad 发表于 2024-1-13 09:12:17

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

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

eqajoefiwae 发表于 2024-1-13 09:12:43

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

JamesTeest 发表于 2024-1-13 09:13:17

2^1024=1.797693134862315907729305190789e+308


1.79769313 就是这么来的


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

ameahopiyoyif 发表于 2024-1-13 09:14:03

非常有用,非常感谢

uucepekoqijew 发表于 2024-1-13 09:14:23



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

ojaupobcisi 发表于 2024-1-13 09:14:56

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

Marleslots 发表于 2024-1-13 09:15:40

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

aecupeemow 发表于 2024-1-13 09:16:00

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

DJWilliamstada 发表于 2024-1-13 09:16:36

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