float的大小为4个字节,长的大小为8个字节。
因此,float的大小比long的大小要小。但是,浮动的范围大于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
因此,双能容纳更大的价值,并采取粒径小于decimal.Why?
也看到了答案更情境版本的同一问题:http://stackoverflow.com/questions/4232590/casting-float-maxvalue-to-long-throws-exception。也许最重要的是,请阅读本文档:http://docs.sun.com/source/806-3568/ncg_goldberg.html – 2010-12-04 15:09:59