繁体   English   中英

如何确定最小的正可表示浮点值?

[英]How is the smallest positive representable floating-point value determined?

只是好奇事情是如何工作的。 float max和epsilon值为

Single MaxValue = 3.40282347E+38F; // derived from 1.000.. * 2^128
Single Epsilon = 1.401298E-45F; // probably from substracting (1.00..01 - 1.00..0) * 2^-128 ?

但是最小的正值应在1 / MaxValue或1 * 2 ^ -127左右,这将使^ -39或^ -38成为十进制数的幂。 那么,float如何存储低于-38(至-45)的功率?

对于非常小的数字,IEEE 754浮点使用允许较小间隔的归一化值。

在计算机科学中,非正规数或非正规数(现在通常称为次正规数)填补了浮点算术中零附近的下溢缺口。 大小小于最小标准数的任何非零数都是“次标准”。

在正常的浮点值中,有效位数不包含前导零。 而是将前导零移动到指数。 因此0.0123将写为1.23×10-2。 非正规数是指此表示将导致其指数低于最小指数(该指数通常具有有限范围)的数字。 此类数字使用有效数字的前导零表示。

有关更多信息,请参见非常规数字Wikipedia页面IEEE 754-1985的页面,其中还列出了您遇到的数字(10 ^ -45)。

最接近零的正数和负数(在指数字段中用全零表示的归一化值,在分数字段中用二进制值1表示)是±2 ^ -149≈±1.40130×10 ^ -45

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM