YYW'S BLOG

知识的分享就是知识的获得
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Q 语言初学者系列:(2)基本数据类型

Posted on 2008-07-10 01:41  阿武  阅读(2020)  评论(0编辑  收藏  举报

      声明:本系列文章全部参考自官方教程,由于缺乏中文资料而且本人E文实在太菜,对于E文较好的朋友可以直接通过下面的链接访问官方网站提供的教程,
欢迎大家一起学习讨论。
hhttps://code.kx.com/trac/wiki/QforMortals2/contents
用户名跟密码为anonymous


Q语言跟C#、JAVA还有SQL基本数据类型的比较

Q SQL Java C#
boolean boolean Boolean Boolean
byte byte Byte Byte
short smallint Short Int16
int int Integer Int32
long bigint Long Int64
real real Float Single
float float Double Double
char char(1) Character Char
symbol varchar (String) (String)
date date Date
datetime datetime Timestamp !DateTime
minute


second


time time Time !TimeSpan
enumeration



各种数据类型的信息

type size char type num type notation null value
boolean 1 b 1 1b 0b
byte 1 x 4 0x26 0x00
short 2 h 5 42h 0Nh
int 4 i 6 42 0N
long 8 j 7 42j 0Nj
real 4 e 8 4.2e 0Ne
float 8 f 9 4.2 0n
char 1 c 10 "z" " "
symbol * s 11 ‘zaphod `
month 4 m 13 2006.07m 0Nm
date 4 d 14 2006.07.21 0Nd
datetime 4 z 15 2006.07.21T09:13:39 0Nz
minute 4 u 17 23:59 0Nu
second 4 v 18 23:59:59 0Nv
time 4 t 19 09:01:02:042 0Nt
enumeration

* `u$v
dictionary

99 `a`b`c!!10 20 30
table

98 ([] c1:ab`c; c2:10 20 30)
 

下面继续针对各种数据类型的讲解:
1.       整数数据(Integer Data
    整数类型跟其它编程语言的描述基本相同。

            int
    int占用4个字节的内存空间,存储了一个整型的数字。

            short
    short 占用两个字节的内存空间,只能存储一个较小的整数,以”h”结尾。

e.g.
q)b:-123h
q)b
-123h

            long
    long 占用了8个字节的内存空间,可以容纳较大的整数,以”f”结尾。

e.g.
q)c:1234567890j
q)c
1234567890j 

2.       浮点数据(Floating Point Data
支持科学记数法。

            float
        可以保证至少15位小数的的精度,以”f”结尾。相当于JAVAC#里面的double

            real
        可以保证至少6位小数的的精度,以”e”结尾。相当于JAVAC#里面的float

3.       二进制数据(Binary Data

            boolean
        当条件为真是,值为1b, 当条件为假时,值为0b

e.g.
q)1=1
1b
q)1=0
0b

byte

4.       字符数据(Char Data)

            char
    表示一个字符使用的是引号。

e.g.
q)ch:”q”
q)ch
“q”

还可以使用”\”做为转义字符,这跟C#JAVA是一样的。

q)ch:"\""                        / double-quote
q)ch                             / console also displays the escape "\""
q)ch:"\\"                        / back-slash
q)ch:"\n"                        / newline
q)ch:"\r"                        / return
q)ch:"\t"                        / horizontal tab       

5.       symbol
symbol是由`符号开头的一串字符,但symbol并不等同于字符串。
那么如何才能让一个symbol包含空格等特殊符号呢?答案就是通过字符串,下面的例子并说明:

e.g.
q)`$"A symbol with `backtick"
`A symbol with `backtick

6.       时间类型

            date
       date类型的值的定义格式应该为yyyy.mm.dd,月份跟日期不够两位数需要在前面加0

e.g.
q)d:2008.07.03
q)d
2008.07.03 

还可以通过d.year, d.mm, d.dd 获取到年、月跟日期,d.month可以得到month的对象。 

            time
       time 类型的值的定义格式应该为hh:mm:ss.uu,同样需要补0的地方还是要补上

e.g.
q)t:16:30.000
q)t
16:30.000

可以通过t.hh, t.mm, t.ss 获取到小时、分钟跟秒,t.minute t.second 得取到minutesecond的对象。 

            datetime
        datetime 的格式是由datetime中间通过“T”隔开的标准格式

e.g.
q)dt:2006.07.04T09:04:59:000
q)dt
2006.07.04T09:04:59:000 

Datetime具备了datetime所有的属性外还可以通过dt.datedt.time得到datetime的对象。 

            month
        month 的格式为yyyy.mm而且需要在末尾追回一个字符m”

e.g.
q) mon:2006.07m
q)mon
2006.07m

            minute
        minute 的格式为hh:mm

            second
        second 的格式为 hh:mm:ss

7.       无穷大 非数字 类型(Infinities and NaN
下表列出了各种类型的无穷大的表示法:

Token Value
0w Positive float infinity
-0w Negative float infinity
0W Positive int infinity
-0W Negative int infinity
0Wh Positive short infinity
-0Wh Negative short infinity
0Wj Positive long infinity
-0Wj Negative long infinity
0Wd Positive date infinity
-0Wd Negative date infinity
0Wt Positive time infinity
-0Wt Negative time infinity
0Wz Positive datetime infinity
-0Wz Negative datetime infinity
0n NaN, or not a number

8.       空值类型(Null Values
下表列出了各种类型的空值表示法:

type null
boolean 0b
byte 0x00
short 0Nh
int 0N
long 0Nj
real 0Ne
float 0n
char " "
sym `
month 0Nm
date 0Nd
datetime 0Nz
minute 0Nu
second 0Nv
time 0Nt