float的大小为4个字节,long的大小为8个字节 因此,float的大小小于long的大小。但是,浮动范围大于长。
小数和双倍的相同情况。
数据类型
+----------+------------+----------------------+
| Data Type| Size | Range |
+----------+------------+----------------------+
| long | 8 bytes |-9.22e18 .. 9.22e18 |
| float | 4 bytes |-3.40e38 .. 3.40e38 |
| decimal | 16 bytes |-7.92e28 .. 7.92e28 |
| double | 8 bytes |-1.80e308 .. 1.80e308 |
+----------+------------+----------------------+
示例:
decimal f = 10000000000000000000.0m; //takes 16 bytes
double d = 10000000000000000000000000000.0d; //takes 8 bytes
因此,double可以保持更大的值并且比decimal更小。为什么?
答案 0 :(得分:1)
因为double为指数赋予了比小数更多的位。
答案 1 :(得分:0)
因为你使用double而松散了一些精度,而对于较大的值则浮动。看一下IEEE Standard for Floating-Point Arithmetic的确切方程式。
简单地说就是这样想的。如果我给你2个单位数字代表一个值,你可以通过几种方式表示这个数字......
如果您只是遵循写入数字的正常惯例而且您的范围将是00 - > 99.但是,您可以选择以科学计数法对两个数字进行编码,然后您的范围将为0 x 10 ^ 0 - > 9 x 10 ^ 9。
最后,两种编码都表示相同数量的可能值,但后面编码的范围要大得多。
答案 2 :(得分:0)
在内部,浮点数是近似值。它们不是整数的精确值。那么你在双打范围内获得的收益,你付出的准确性。你对双打(增加,减去......)所做的操作越多,他们就越失去准确性。对于大多数计算,双打是完美的,但对于货币计算,你肯定想要使用小数。