C#中浮点数和双数据类型的实际范围是多少?

use*_*287 1 c# floating-point double types

我正在学习C#并试图在C#中获得实际数据类型范围的逻辑视觉表示.

我已经移动了整数,现在浮动和双数据类型.

  1. 8位(1字节),sbyte,-128到127.
  2. 8位(1字节),字节,0到255.
  3. 16位(2字节),短,-32,768到32,767.
  4. 16位(2字节),ushort,0到65535.
  5. 32位(4字节),int,-2,147,483,648到2,147,483,647.
  6. 32位(4字节),uint,0到4,294,967,295.
  7. 64位(8字节),长,-9,223,372,036,854,775,808到9,223,372,036,854,775,807
  8. 64位(8字节),ulong,0到18,446,744,073,709,551,615.

以下是msdn中float和double数据类型大小的引用:

Float:http://msdn.microsoft.com/en-us/library/b1e65aza( v= vs.110).aspx

在此输入图像描述

双倍:http: //msdn.microsoft.com/en-us/library/678hzkk9.aspx

在此输入图像描述

因此,试图遵循上面编号列表中指定实际数字范围的惯例,这两个范围实际上代表什么?

Eri*_*hil 8

范围实际上是-infinity到+ infinity.

最大的有限值 float是340282346638528859811704183484516925440.这是2 128 -2 128-24.

最大的有限 double是179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.这是2 1024 -2 1024年至1053年.

  • @Shad:浮点格式不使用二进制对数字进行编码(至少不仅仅是二进制)。使用符号、尾数(通常以二进制表示,但可以使用压缩十进制和其他替代形式)和指数(通常添加偏差的二进制)对数字进行编码。尾数可以接近 2(尽管它使用二进制,但它被缩放到 1 到 2 之间),典型“float”格式中的指数范围可以从 -126 到 +127。它是 2 的指数,因此最大有限值几乎是 2(从有效数)乘以 2^127(从指数)。 (2认同)

Ere*_*mez 6

为了简洁,范围以"指数格式"表示.例如,+ 1.7e + 308表示17后跟307个零:

1,700,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000

因此,对于如此大的数字,指数格式是首选的.极小的数字也是如此.

另外,看看Jon Skeet的这篇读物.