请问双比长更大的范围?(Does double have a greater range than

2019-07-01 21:02发布

在MSDN上的文章,它指出double数据类型具有范围“-1.79769313486232e308 .. 1.79769313486232e308”的。 而long的数据类型只有一系列“-9,223,372,036,854,775,808 .. 9,223,372,036,854,775,807”的。 一个如何能double容纳这么多的数据不是long ,如果他们在大小两个64位?

http://msdn.microsoft.com/en-us/library/cs7y5x0x(v=vs.90).aspx

Answer 1:

可能双打的数量,以及可能的多头数量是一样的,他们只是不同的分布*。

多头是均匀分布的,而花车都没有。 你可以阅读更多这里 。

我会写更多,但由于某种原因光标跳来跳去都在我的手机上的位置。

编辑:这实际上可能更有帮助: http://en.wikipedia.org/wiki/Double-precision_floating-point_format#section_1

EDIT2:这是更好的: http://blogs.msdn.com/b/dwayneneed/archive/2010/05/07/fun-with-floating-point.aspx

* 根据该链接,它似乎实际上有更多的多头,因为一些双打都失去了应有的NaN和其他特殊号码代表的方式。



Answer 2:

long是有符号的64位整数值和double是一个64位的浮点值。 看着他们的整箱类型可能会更有意义。 long映射到System.Int64double映射到System.Double



Answer 3:

一个简单的回答是, double只精确到15-16总位数,而不是long ,其中(作为整数型)具有显式数字极限内的绝对精度 ,在此情况下19个数字。 (请记住, 数字在语义上的不同。)

double : - / + 0.000,000,000,000,01至+/- 99,999,999,999,999.9(在100%的准确度,在精度从16位开始的损失,如在“-1.79769313486232e308 .. 1.79769313486232e308”表示)

long :-9,223,372,036,854,775,808到+9,223,372,036,854,775,807

ulong :0至18,446,744,073,709,551,615(1余倍长的数字,但相同的值的范围(因为它仅被移位以排除负收益)。

在一般情况下,INT型实数优于浮点十进制值 ,除非你明确需要(无论哪个目的)十进制表示。


此外,你可能知道, 签署优于未签名 ,因为前者是容易出错的要少得多(考虑语句uint i; ,然后i - x;其中x > i )。



文章来源: Does double have a greater range than long?
标签: c# types size