购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3-5 浮点数数据类型

程序设计时,如果需要比较精确地记录数值的变化,即需使用小数点以下数值时,则建议使用浮点数来声明此变量,如平均成绩、温度、里程数等。在其他高级语言中,人们习惯称此数为实数,浮点数有两种,float是单精度浮点数、double是双精度浮点数,另外C#又多了一般程序语言没有的decimal(高精度十进制)类型的浮点数。

3-5-1 浮点数基本概念

由于double(双精确度浮点数)和float(单精度浮点数)之间,除了容量不一样之外,其他均相同,所以在此节我们将其合并讨论,表3-3展示了浮点数数据类型的概念。

表3-3 C#浮点数数据类型表

表3-3中长度的单位是位(Bit),8位等于1个字节。

上述数据类型中decimal的精确度最高,其特色是由小数点右边的数字数目决定数值的精确度,此类型的数据常被用在财务程序、货币金额(如$350.00)或利率(如2.5%)上。此外,decimal数的另一个特色是会保留小数点右边的0,读者可以参考3-5-3节的项目ch3_7。以下是单精度浮点数与双精度浮点数的说明。

另外,若是有一个数字为0.789,我们可以省略0,而直接将它改写成.789。

3-5-2 浮点数数据类型的属性

表3-3中的每个浮点数数据类型皆有MinValue和MaxValue属性,此属性可以显示该浮点数数据类型的最小值和最大值。

方案ch3_6_1.sln: 列出浮点数float、double和decimal的最小值和最大值。

执行结果

3-5-3 浮点数的后缀字符

如果一个含小数点的数值没有后缀字符,或是说没有D或d后缀字符,则表示此数值是一个双精度浮点数。

实例1.设定pi是3.14159。

     double pi = 3.14159;          // 没有后缀字符,所以3.14159是双精度浮点数

如果一个含小数点的数值,其后缀字符是F或f,则此数是单精度浮点数。以下会有错误产生,因为3.14159是双倍精度浮点数,单精度浮点数变量pi空间不足。

     float pi = 3.14159;          // 错误 !

我们可以将其改写为如下:

     float pi = 3.14159F;         // 正确

     float pi = 3.14159f;         // 正确

如果一个含小数点的数值,其后缀字符是M或m,则此数值是decimal浮点数,如前所述decimal数的特色是会保留小数点右边的0。

方案ch3_7.sln: 认识float、double和decimal数字。

执行结果

从上述执行结果,读者可以看到单精度浮点数pi1输出了7位的有效位数。双精度浮点数可以保留15位的有效位数,所以可以输出所有位数。高精度十进制浮点数可以保留29位有效位数,所以pi3保留了右边的3个0。

3-5-4 科学记数法

实例1.若有一数字是123.456,则我们可以将它表示为:

     1.23456E2

     0.123456e3

     123456E-3

在上例的科学记数法中,大写E和小写e意义是一样的。

方案ch3_8.sln: 科学记数法的应用。

执行结果

3-5-5 千位分隔符

3-4-4节整数千位分隔符的概念也可以应用在浮点数中:比较长的数字,不易于理解,这时可以使用“_”作为千位分隔符,适度地使用千位分隔符可以让所表达的数字比较易于理解。

方案ch3_9.sln: 将千位分隔符应用在浮点数中。

执行结果

3-5-6 sizeof()

3-4-6节所介绍的sizeof()函数也可以用于取得浮点数的长度,其所回传的单位是字节(byte)。注:sizeof()函数的参数不可以使用变量名称,必须是数据类型。

方案ch3_10.sln: 列出表3-3中浮点数数据类型所需的内存大小。

执行结果

3-5-7 认识float和double的NaN和无限大

双倍精度浮点数或是单精度浮点数的运算也可以产生下列3种数值:

方案3_11.sln: 输出非数值、正无限大∞和负无限大-∞。

执行结果 vyK+RH+H5Gn30Ah3TiVhHOGql4clY8ubFzFzq2OowOKE0dLbz4nnulbpdjWxiSxE

点击中间区域
呼出菜单
上一章
目录
下一章
×