本章节介绍集算器中支持的数据类型及判断数据类型涉及到的函数。
在集算器中,有以下几种基本数据类型:
Ø 整数
32位整数,即-231~231-1之间的整数,其取值范围-2147483648~2147483647,可用类型转换函数int()将其它类型数据转换为32位整数。
Ø 长整数
64位整数,即-263~263-1之间的整数,比整数类型的取值范围更大,可用类型转换函数long()将其它类型数据转换为长整数。
特别的,可以在整数后面添加大写的L表示长整数,长整数与整数相比有更大的取值范围;还可以用0x开头的串来表示十六进制的长整数:
|
A |
1 |
=123456789L*1000 |
2 |
=123456789*1000 |
3 |
=12345678900*10 |
4 |
0x00FF |
由于普通整数的取值范围是-231~231-1,即-2147483648~2147483647,因此A2中的结果超出了整数的取值范围。而A1中,使用了长整数,取值范围增大为-263~263-1,就可以获得正确结果。A3中12345678900超出了普通整数的取值范围,会被自动解析为长整数。A4中是十六进制的单元格常数。A1,A2,A3和A4中的值如下:
从A1和A3中的计算结果可以发现,在进行某一步运算时,当参与运算的操作数之一为长整数,结果就是长整数。
Ø 浮点数
64位浮点数,这是集算器中最常用的数据类型,涉及小数的运算基本都是用它来计算的,可用类型转换函数float()将其它类型数据转换为浮点数。由于浮点数是用二进制规则存储数据的,因此在计算中有可能出现误差。
|
A |
1 |
43.41 |
2 |
-4.45E13 |
3 |
3% |
4 |
=float(54) |
A1,A2,A3和A4中的值如下:
其中,A2中为用科学计数法表示的浮点数;A3中为百分数表示的浮点数,百分数的这种写法只能作为常数使用,而不能用在表达式中。
Ø 长实数
长实数可以无误差地存储任何实数,但是使用长实数计算时,需要消耗更多的内存,且计算的效率较低。可用类型转换函数decimal()将其它类型数据(如字符串)转换为长实数。
|
A |
1 |
5.2 |
2 |
=A1*A1 |
3 |
=decimal("5.2") |
4 |
=A3*A3 |
A1中为浮点数5.2,A3中将字符串"5.2"转换为长实数。A2与A4中计算的结果如下:
可以看到,由于采用二进制处理,因此浮点数的运算可能造成精度误差,而长实数的计算没有这种情况。
Ø 实数
实数包括整数、长整数、浮点数、长实数这四种类型,可用类型转换函数number()将其它类型数据转换为实数。
Ø 布尔型
包括true/false
|
A |
1 |
true |
2 |
false |
3 |
=4>2 |
4 |
=13%3==0 |
A1,A2,A3和A4中的结果如下:
Ø 字符串
在使用表达式时,用双引号括起来,其中转义字符用\。而在直接定义字符串常量时,不用引号,还可以用函数string()将其它类型的数据转换为字符串。在表达式中计算两个字符串x与y合并,可以在之间添加空格x y。在将两个字符串合并时,也可以直接用加法,写作x+y,但是此时x与y必须均为字符串,如果其中之一为实数,结果即为实数而不是字符串。如果需要将实数作为字符串,与其它字符串连接,可以用x/y,来计算,此时如果x与y其中之一为字符串,结果即为字符串。
字符串转义规则与JAVA相同,可参考使用手册。
|
A |
1 |
Amy |
2 |
="State:\tTX" |
3 |
="Texas" "Dallas" |
4 |
=A1+3.14 |
5 |
=A1/3.14 |
A1,A2,A3,A4和A5中的结果如下:
Ø 日期/时间
写成yyyy-mm-dd和hh:mm:ss形式。可以用类型转换函数date(),time()和datetime()将字符串或者长整数转换为日期,时间或者日期时间类型。
|
A |
1 |
2014-10-5 |
2 |
22:15:30 |
3 |
=date("2014" "-10" "-5") |
A1,A2和A3中的结果如下:
其中,A3中的date函数除了可以将字符串转换为日期外,也可以直接设定日期的年月日,如改写为date(2014,10,5) 将得到相同的结果。
可以在菜单栏的工具选项中,点击选项按钮,在环境选项卡中,设定时间/日期数据的格式,以及字符编码等。
注意,当把数据转换为其它类型时,有可能会丢失精度。
可以用下面几个函数判断数据的类型:
Ø ifnumber(x)
判断x是否是实数
Ø ifstring(x)
判断x是否是字符串
Ø ifdate(x)
判断x是否是日期类型或日期时间类型
Ø iftime(x)
判断x是否是时间类型
|
A |
1 |
=ifnumber(3.5) |
2 |
=ifstring(now()) |
A1中,3.5是浮点数,属于实数。A2中now()函数计算当前日期时间,结果不是字符串。A1和A2中的结果如下: