实数的基础含义每个读者都应明白,为了用户使用方便,在TSL中用户一般不需要去理解关于实数更多的知识,只需要使用就可以了。
但有例外,一个是将实数处理成为要存贮的字节流,写入文件或者和其他的外部程序发生交互的时候,需要理解实数在计算机中的具体存贮大小。二是和外部DLL(Dynamic Link Library,一种在Windows中经常使用并依赖的开发技术,使得开发可以模块式开发)发生关系的,必需明确实数的计算机里的标准类型。
在计算机里,实数一般是以浮点的方式来表达的,关于浮点的表达方式在这里就不做具体描述。我们只关注下具体的数据类型,一般存在如下数据类型:
Single也叫Float:单精度浮点数,存贮位数为32位,也就是占用四个字节的存贮空间,可表达的范围为:负数为-3.4E38 ~ -1.4E-45,正数为1.4E-45 ~3.4E38,有效精度为十进制的7位。目前,由于浮点协处理已经成为计算机的标准配置,计算机内存以及硬盘以及变得很大,这种损失精度的类型已经很少使用了,主要应用在那种对存贮空间很苛刻,对于精度要求不大的应用中。
Double:双精度浮点数,存贮位数位64位,也就是占用八个字节的存贮空间,可表达的范围为:正数为5.0E-308~1.7E+308,负数为-1.7E+308~-5.0E-308,有效精度为十进制的16位。Double是目前应用得最广的数据类型,也是TSL语言中默认采用的实数数据类型。当和DLL发生关系的时候,又或者执行字节流处理的,TSL会自动按照指定的位数或者类型采用DOUBLE或者Single类型。
其他实数数据类型:有占用16个字节的Long Double类型,有占用10个字节的Extended Double类型,这些类型可以描述更精确地数字,可以表达更大的数据范围,但是这些类型并不常用。
特殊的实数
在实数中,有几个特殊的实数,-INF,+INF,NaN。也就是负无穷大,正无穷大,以及错误的数据(Not a Number)。
这些为什么放在实数中呢?事实上这些数据往往都是实数运算产生的结果,例如正数处以0得到的是+INF,负数处以0得到的是-INF,而0处以0则是NaN。
TSL语言提供了一些方法给用户去判断是否是这些特殊的实数。