成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

2. Q語(yǔ)言學(xué)習(xí)之路—基本數(shù)據(jù)類型: Atoms

李濤 / 1143人閱讀

摘要:概述所有的數(shù)據(jù)都是通過(guò)最小單位構(gòu)造。語(yǔ)言中大部分?jǐn)?shù)據(jù)類型與傳統(tǒng)語(yǔ)言類似,但是多出了和相關(guān)的類型,用來(lái)加速時(shí)間序列運(yùn)算。適用的運(yùn)算符僅有數(shù)據(jù)中共有兩種類型數(shù)據(jù),更類似于中的和。其表示值為從千禧年計(jì)數(shù)的納秒數(shù),之前為負(fù)數(shù),之后為正數(shù)。

概述

所有的數(shù)據(jù)都是通過(guò)最小單位atom構(gòu)造。q語(yǔ)言中大部分?jǐn)?shù)據(jù)類型與傳統(tǒng)語(yǔ)言類似,但是多出了date和time相關(guān)的類型,用來(lái)加速時(shí)間序列運(yùn)算。下表給出了q語(yǔ)言和幾個(gè)傳統(tǒng)語(yǔ)言數(shù)據(jù)類型的對(duì)比:


下表給出了Q語(yǔ)言各個(gè)類型的詳細(xì)信息:


1. 整型數(shù)據(jù)

long: 8字節(jié); 42, 42j

short: 2字節(jié)有符號(hào)數(shù);其后必須帶后綴h; eg: -123h

int: 4字節(jié)有符號(hào)數(shù);其后必須帶后綴i; eg: 1234567890i

2. 浮點(diǎn)數(shù)據(jù)

支持單精度雙精度浮點(diǎn)數(shù)據(jù)類型。

float: 8字節(jié);后綴f; 傳統(tǒng)語(yǔ)言中的double; eg: 3.1415926, 1f, 1.0, 1.234e07, 1.234e-7

real: 4字節(jié);后綴e; 傳統(tǒng)語(yǔ)言中的float; eg: 12.34e, 1.234e7e
注:不建議使用real這個(gè)類型,因?yàn)樵谠S多金融問(wèn)題中,real的精度往往不夠用

浮點(diǎn)數(shù)顯示精度: q console默認(rèn)顯示7位小數(shù),可以通過(guò)命令 P 來(lái)最多顯示16位小數(shù),也可以通過(guò) P 0 來(lái)顯示完整的17位小數(shù),但是最后一位小數(shù)不可信。

q)f12:1.23456789012
q)f16:1.234567890123456
q)P 12
q)f12
1.23456789012
q)f16
1.23456789012
q)P 16
q)f12
1.23456789012
q)f16
1.234567890123456
q)P 0
q)1%3
0.33333333333333331

3. Binary數(shù)據(jù)

boolean : 1字節(jié); 后綴b; 沒(méi)有true或者false關(guān)鍵字, 1b代表true, 0b代表false

byte : 使用1字節(jié)保存8位數(shù)據(jù),前綴0x緊跟著2個(gè)16進(jìn)制數(shù),大小寫均可。 eg: 0x2A, 0x2a

GUID : globally unique identifier. 在時(shí)間和空間上都唯一,可以對(duì)null guid值0Ng使用?來(lái)生成一個(gè)guids的列表。
eg: 1?0Ng, 2?0Ng, -2?0Ng
使用正號(hào)和負(fù)號(hào)生成guid列表的區(qū)別在于:正號(hào)使用同一個(gè)隨機(jī)種子(seed), 而負(fù)號(hào)使用的種子是隨機(jī)的

可以通過(guò)解析一個(gè)16進(jìn)制數(shù)字來(lái)構(gòu)造guid:"G"$"61f35174-90bc-a48a-d88f-e15e4a377ec8", 同樣,可以使用命令sv來(lái)從一個(gè)16個(gè)byte的列表構(gòu)造guid: 0x0 sv 16?0xff。

GUID適用的運(yùn)算符僅有:~, =, <, >, null

4. Text數(shù)據(jù)

q中共有兩種text類型數(shù)據(jù),更類似于SQL中的CHARVARCHAR

char : 1字節(jié); 對(duì)應(yīng)SQL中的CHAR; 用雙引號(hào)表示;特殊字符用作為前綴來(lái)顯示,盡管在q-console中依舊將顯示了出來(lái),但是實(shí)際上它就是一個(gè)單字符

q)""" / double-quote
"""
q)"" / back-slash
""
q)"
" / newline
"
"
q)"
" / return
"
"
q)"	" / horizontal tab
"	"
q)"142"
"b"

symbol : 前綴` eg: q, `zaphod`
symbol與char一樣,同樣是原子數(shù)據(jù),這意味著symbol不可拆分,symbol中的單個(gè)字符不可獲取。 symbol不是string, 并且symbol數(shù)據(jù)`a與char數(shù)據(jù)"a"不相等。

5. 時(shí)間類型數(shù)據(jù)

date : 4字節(jié),表示為yyyy.mm.dd; 其表示值為從2000.01.01開始的日期數(shù),在之前的為負(fù)值,之后的為正值。

q)2000.01.01=0
1b

表示的累積日數(shù)可以通過(guò)強(qiáng)制轉(zhuǎn)換得到:

q)`int$2000.02.01

Time :

如果毫秒級(jí)夠用的話,使用time類型,表示為hh:mm:ss.uuu;其表示值為從00:00的毫秒(milliseconds)數(shù)

q)12:34:56.789
12:34:56.789
q)12:00:00.000=12*60*60*1000
1b

其表示值同樣可以通過(guò)強(qiáng)制轉(zhuǎn)換來(lái)獲取

如果毫秒級(jí)不夠用的話,使用timespan類型;其表示為從00:00開始的納秒(nanoseconds)數(shù), 表示為0Dhh:mm:ss.nnnnnnnnn。 其中0D是可選的。

q)12:34:56.123456789
0D12:34:56.123456789
q)12:34:56.123456 / microseconds become nanos
0D12:34:56.123456000

Date-Time :
(已棄用的) 使用T進(jìn)行分隔:

q)2000.01.01T12:00:00.000
_
q)2000.01.02T12:00:00.000=1.5
1b

可以通過(guò)q)date$2000.01.02T12:00:00.000`來(lái)提取日期和時(shí)間

更推薦使用的類型是timestamp, 是date類型和timespan類型的連接,通過(guò)D進(jìn)行分離。其表示值為從千禧年計(jì)數(shù)的納秒數(shù),之前為負(fù)數(shù),之后為正數(shù)。
同樣,有如下的操作:

q)2014.11.22D17:43:40.123456789
q)`long$2014.11.22D17:43:40.123456789
q)`date$2014.11.22D17:43:40.123456789
q)`timespan$2014.11.22D17:43:40.123456789

month : 32位帶符號(hào)整型, 表示為yyyy.mm和一個(gè)尾符號(hào)m, 其表示值為從千禧年計(jì)數(shù)的月份數(shù)。注意不要忘記帶尾綴m。

q)2015.11m
q)2001.01m=12
1b

minute : 32位帶符號(hào)整型, 表示為hh:mm, 其表示值為從00:00計(jì)數(shù)的分鐘數(shù)。

q)12:30
q)12:00=12*60
1b

second : 32位帶符號(hào)整型, 表示為hh:mm:ss, 其表示值為從00:00計(jì)數(shù)的秒數(shù)。

q)23:59:59
q)23:59:59=-1+24*60*60
1b

構(gòu)成和點(diǎn)操作符 :
可以通過(guò)點(diǎn)操作符提取日期,月份,日等

q)dt:2014.01.01
q)dt.year
2014i
q)dt.mm
q)dt.dd
q)ti:12:34:56.789
q)ti.hh
12i
q)ti.mm
q)ti.ss

但是更推薦使用強(qiáng)制轉(zhuǎn)換符,因?yàn)樗鼘?duì)所有有意義的時(shí)間提取和轉(zhuǎn)換都是有效的:

q)`dd$dt
1i
q)`mm$dt
q)`dd$dt
q)`month$dt
2014.01m

6. 算術(shù)Infinities 和 Nulls

一些特殊含義的表示:

Literal            Value
  0w        Positive float infinity
 -0w        Negative float infinity
  0n        Null float ; NaN, or not a number
  0W        Positive long infinity
 -0W        Negative long infinity
  0N        Null long

注意小寫的w代表float, 大寫的W代表整數(shù)。

在q語(yǔ)言中,數(shù)字的除法結(jié)果總是float. 正數(shù)除以0的結(jié)果為正無(wú)窮,負(fù)數(shù)除以0的結(jié)果為負(fù)無(wú)窮。 在數(shù)學(xué)中,0除以0是未定義的,因此,0n代表NaN。整型無(wú)窮可以參與比較并返回正確的結(jié)果

q)42<0W
1b
q)-0W<42
1b

無(wú)窮代表實(shí)際的值:

q       C Equivalent          Numeric
0N         MIN_INT        -9223372036854775808
-0W        MIN_INT+1      -9223372036854775807
0W         MAX_INT        +9223372036854775807      

因此,整型的大小順序?yàn)椋?/p>

0N < -0W < normal integer < 0W

q)9223372036854775806+1
0W
q)-0W-1
0N
q)-0W+1
-9223372036854775806

實(shí)際上q語(yǔ)言沒(méi)有溢出解釋了如下現(xiàn)象:

q)0W+1
0N
q)0W+2
-0W
q)0W+3
-9223372036854775806
7. Nulls

null值一般表示的是缺失數(shù)據(jù)。在q中, null與正常的值占用同樣的空間,如下總結(jié)了null的不同類型值:

type            null
boolean          0b
guid             0Ng (00000000-0000-0000-0000-000000000000)
byte             0x00
short            0Nh
Int              0N
long             0Nj
real             0Ne
float            0n
char             " "
sym              `
timestamp        0Np
month            0Nm
date             0Nd
datetime         0Nz
timespan         0Nn
minute           0Nu
second           0Nv
time             0Nt

注意:""不是一個(gè)null char, 而是一個(gè)char的空列表

使用null指令而不是=來(lái)測(cè)試一個(gè)值是不是null值,因?yàn)閝語(yǔ)言是動(dòng)態(tài)類型的,而null指令是類型獨(dú)立的。

q)null 42
0b
q)null `
1b
q)null " "
1b
q)null ""

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/17962.html

相關(guān)文章

  • 7. Q語(yǔ)言學(xué)習(xí)之路數(shù)據(jù)轉(zhuǎn)換

    摘要:可以通過(guò)命令來(lái)查看全局變量和對(duì)應(yīng)的值,也可以通過(guò)操作符來(lái)查看轉(zhuǎn)換使用操作符,右邊的運(yùn)算元是原始值,而左邊的運(yùn)算元是目標(biāo)類型。從中解析數(shù)據(jù)使用大寫的目標(biāo)類型作為左運(yùn)算元,作為右運(yùn)算元。 1. 類型 1. 基礎(chǔ)數(shù)據(jù)類型 showImg(https://segmentfault.com/img/bVbqZmF?w=503&h=599); showImg(https://segmentfaul...

    antz 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<