2.1.2 浮点类型
浮点数的精度是可变的。如果读取本来是0.1的一个浮点数,那么可能很容易读取成0.099 999 999 999 999 999或者0.100 000 000 000 000 000 1或者其他非常接近0.1的一个数。另外,像Avagadro常数这样一个非常大的数字(6.02E23),可能会被减去9.9E9,结果仍然非常接近于6.02E23,因为原始数字实在是太大了。根据定义,一个浮点数的精度与它包含的数字个数成正比。准确地说,精度取决于有效数字的个数,而不是一个固定值,比如±0.01。
C#支持表2-2所示的两种浮点数。
二进制数被转换成十进制数,以便于人们理解。二进制数被转换成15位十进制数字,一个余数构成第16位十进制数字,如表2-2所示。具体地说,1.7×10307到1×10308的数只有15位有效数字。然而,1×10308到1.7×10308的数有16位有效数字。decimal类型的有效数字范围与此相似。
表2-2 浮点类型
|
类型 |
大小 |
范围 |
BCL名称 |
有效数字 |
|
float |
32位 |
±1.5×1045~±3.4×1038 |
System.Single |
7 |
|
double |
64位 |
±5.0×10324~±1.7×10308 |
System.Double |
15~16 |
| 回书目 上一节 下一节 |