Perl 6 數(shù)值類型: Numbers

數(shù)值的分類(初高中知識)

數(shù)值的分類| 用Sketch畫的

數(shù)值可以分為“實數(shù)(Real Number)”和“虛數(shù)(Imaginary Number)”卿嘲,實數(shù)又分為“有理數(shù)(Rational Number)”和“無理數(shù)(Irrational Number)”扳抽,有理數(shù)又可以分為“整數(shù)(Integer)”和“小數(shù)(Decimal)”叹括,整數(shù)又可以分為“正數(shù)(Positive Integer)”叁执,“負(fù)數(shù)(Negative Integer)”和0粤策。
綠色的是 role(角色), 橘黃色的是 class(類)

就是這么簡單明了

Perl 6 中的數(shù)值類型

Perl6 提供的數(shù)字類型概全了整個數(shù)字的各個分類耿戚,

  • 角色:Numeric, Real, Rational
  • 類: Complex, Num, Rat, FatRat, Int
  • 類:ComplexStr, NumStr, RatStr, IntStr

數(shù)值純種:Complex/Num/Rat/FatRat/Int

  • Complex 是“虛數(shù)”恼蓬,或者稱為“復(fù)數(shù)”
  • Num是“實數(shù)”
  • Rat 是“有理數(shù)”
  • Int 是“整數(shù)”

這些基礎(chǔ)類型都 immutable(不可更改的)

Complex

# 虛數(shù)
a+bi #用 i 來表示虛位
COMPLEX.re #返回實部
COMPLEX.im #返回虛部
COMPLEX.reals #返回實部虛部 List
COMPLEX.polar #返回極坐標(biāo)系的實部虛部 List
####
.floor 
.ceiling 
.round 
.truncate #truncate 去掉小數(shù)部分,只保留整數(shù)
####
COMPLEX.abs # sqrt(($z.re)2 + ($z.im)2)
COMPLEX.conj # 例如 1-4i 返回 1+4i
####
.gist .perl

Num

  • is Cool does Real(Cool的方法以及Real方法都可以用)
  • 雙精度的數(shù)值

Int

整數(shù)類型是我們?nèi)粘V凶畛S玫模?/p>

  • 和Perl5一樣堕澄,數(shù)字之間的下劃線都會被忽略的邀跃,例如2_0_0020002_000一樣:不論進(jìn)制霉咨,都可以用下劃線分
# 十六進(jìn)制 
:16<BEFF> 
0xBEFF      # Perl 5/Python中的表示方式
# 八進(jìn)制
:8<377> 
0o377       # Perl 5/Python中的表示方式
# 二進(jìn)制
:2<11111111> 
0b121111111 # Perl 5/Python中的表示方式
#不論進(jìn)制,都可以用下劃線分
###########
INT.chr
INT.unival

# 指數(shù)之后取余數(shù) (INT ^ POWER) % MODULUS
INT.expmod(POWER,MODULUS)

# 分別遞次取余數(shù)坞嘀,
# LIST 中的第一個取余之后的商躯护,作為第二次的被除數(shù),依次...
# 可以方便地把秒 轉(zhuǎn)換成 年月天時分秒
INT.polymod(LIST) 
#不止可以是 Int丽涩,Rat棺滞,Real也可以這個方法

# 是不是質(zhì)數(shù)
INT.is-prime
#返回數(shù)字的二進(jìn)制形式最右端(lower)為1的index
INT.lsb
#返回數(shù)字的二進(jìn)制形式最左端(higher)為1的index
INT.msb 

###### 從Real角色繼承的方法
# from role Real
.Rat #轉(zhuǎn)成有理數(shù)類型
.rand 
.sign

# 近似化取值
.round 
.floor 
.ceiling 
.truncate

#轉(zhuǎn)換進(jìn)制:$n進(jìn)制,$digit小數(shù)位
# $n 必須在2到36, 返回字符串
#因為數(shù)字加字母總共就10+26=36位矢渊,不然無法表示了
INT.base($n继准,$digit) 

Rat

  • is Cool does Rational(Cool的方法以及Rational的方法都可以用)
  • 默認(rèn)的小數(shù)都是Rat類型
    • 寫出來的有小數(shù)點的數(shù)都是有理數(shù),因為你不可能寫出帶點的無理數(shù)來矮男。默認(rèn)都是 Rat 類型

FatRat

相比Rat類移必,F(xiàn)atRat肥在精度保留

# 構(gòu)造器
FatRat.new($numerator,$denominator)

# 整型得到FatRat類型
INT.FatRat
# Rat型得到FatRat類型
RAT.FatRat

# 分子
$z.numeritor
# 分母
$z.denominator 
# 分子、分母 List
$z.nude 
# 約分到最小
$z.norm 
#公約數(shù)只有1的兩個整數(shù)/自然數(shù),叫做互質(zhì) coprime

# 分式轉(zhuǎn)換成小數(shù)
$z.base-repeating($base)
#返回一個 list of 2 Str類型的毡鉴,分別是小數(shù)的`整數(shù)部分`崔泵,和`小數(shù)部分`。如果除不盡猪瞬,保留 $base 位

數(shù)值雜種: 數(shù)字字符串雜合體

就是某個類型的數(shù)字和 Str 的雜合體憎瘸,都是*Str (ComplexStr, NumStr, RatStr, IntStr)這樣的表示方式。

  • 用作數(shù)字的時候是數(shù)值陈瘦,用作字符串的時候是Str幌甘。
  • 都必須 *Str.new($i, $s)這樣定義。第一個參數(shù)是對應(yīng)的數(shù)值痊项,第二個是字符串锅风。
    • $i是對應(yīng)的數(shù)字類型
    • $s*是一個字符串類型的
    • $i, $s都是必須指定的
  • 對應(yīng)的*Str 類型的是字符串和對應(yīng)數(shù)值類型 bless 到一起的,由兩部分組成鞍泉,可以分別提取這兩部分皱埠。

ComplexStr

  • is Complex is Str()
  • 把它當(dāng) Complex 用時,它會調(diào)用.Numeric方法返回數(shù)字部分咖驮,把它當(dāng)字符串用時漱逸,它就返回字符串的部分。所有的*Str 類型的數(shù)字字符串雜種都一樣游沿。
$z = ComplexStr.new($i, $s)
$z.Numeric  #當(dāng)你把 ComplexStr 類型的時候,調(diào)用
$z.Complex  #返回數(shù)字部分
$z.Str      #返回字符串部分
$z1 cmp $z2 #True 如果$i,$s 的順序和值都一樣

NumStr

$n = NumStr.new($i,$s)
$n.Num 
$n.Str
$n.Numeric #默認(rèn)在數(shù)字環(huán)境下調(diào)用
$n1 cmp $n2 #先比對$i.再$s

RatStr

$r = RatStr.new($i,$s)
$r.Rat 
$r.Str 
$r.Numeric
$r1 cmp $r2

IntStr

$i = Int.new($i,$s)
$i.Int 
$i.Str 
$i.Numeric
$i1 cmp $i2

數(shù)值角色 role

Numeric角色

# 轉(zhuǎn)換成兼容的其他數(shù)值類型
.Real 
.Int 
.Rat 
.Num

#自動把數(shù)字轉(zhuǎn)換成最小的能容納的類型
.narrow

# Log方法
.log 
.log10
# 指數(shù)方法
#默認(rèn)base是e肮砾,如果不指定的話
NUM.exp($base) 
# 取根號
NUM.roots($n)
# 絕對值诀黍,開平方,
.abs 
.sqrt 
.conj

# 強(qiáng)大的自加自減仗处,可以自加自減數(shù)字娜汁、字母等
.succ 
.pred 
# Str類也有這個方法趴拧,自加自減赌结,但不局限與數(shù)字
#對于命名太方便了

Real角色

# 把 Real 類型轉(zhuǎn)成 Rat 類型, $epsilon 定義精度
.Rat($epsilon) 
# 近似化數(shù)值
.rand 
.sign 
.round 
.floor 
.ceiling 
.truncate
# 進(jìn)制轉(zhuǎn)換
.base($base, $digits) #各種進(jìn)制的轉(zhuǎn)換

Rational角色

Rational.new($n,$d)
.numerator 
.denominator 
.nude
.norm 
.bash-repeating($base)
#FatRat扮演Rational角色也颤,繼承所有方法

Reference

  1. Backup: Numbers in Perl6
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市郁轻,隨后出現(xiàn)的幾起案子翅娶,更是在濱河造成了極大的恐慌,老刑警劉巖好唯,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件竭沫,死亡現(xiàn)場離奇詭異,居然都是意外死亡骑篙,警方通過查閱死者的電腦和手機(jī)蜕提,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來靶端,“玉大人谎势,你說我怎么就攤上這事⊙蠲” “怎么了脏榆?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長镣煮。 經(jīng)常有香客問我姐霍,道長,這世上最難降的妖魔是什么典唇? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任镊折,我火速辦了婚禮,結(jié)果婚禮上介衔,老公的妹妹穿的比我還像新娘恨胚。我一直安慰自己,他們只是感情好炎咖,可當(dāng)我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布赃泡。 她就那樣靜靜地躺著,像睡著了一般乘盼。 火紅的嫁衣襯著肌膚如雪升熊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天绸栅,我揣著相機(jī)與錄音级野,去河邊找鬼。 笑死粹胯,一個胖子當(dāng)著我的面吹牛蓖柔,可吹牛的內(nèi)容都是我干的辰企。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼况鸣,長吁一口氣:“原來是場噩夢啊……” “哼牢贸!你這毒婦竟也來了镐捧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎玩焰,沒想到半個月后昔园,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年澜搅,在試婚紗的時候發(fā)現(xiàn)自己被綠了勉躺。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片觅丰。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡妇萄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出轻掩,到底是詐尸還是另有隱情懦底,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站弥臼,受9級特大地震影響根灯,放射性物質(zhì)發(fā)生泄漏烙肺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一氏堤、第九天 我趴在偏房一處隱蔽的房頂上張望鼠锈。 院中可真熱鬧星著,春花似錦虚循、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽斗蒋。三九已至,卻和暖如春捞蚂,著一層夾襖步出監(jiān)牢的瞬間姓迅,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工肩杈, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留扩然,地道東北人聋伦。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓觉增,卻偏偏與公主長得像逾礁,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子截汪,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 2014年的蘋果全球開發(fā)者大會(WWDC),當(dāng)Craig Federighi向全世界宣布“We have new ...
    yeshenlong520閱讀 2,294評論 0 9
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法蚓峦,類相關(guān)的語法暑椰,內(nèi)部類的語法荐绝,繼承相關(guān)的語法,異常的語法召夹,線程的語...
    子非魚_t_閱讀 31,639評論 18 399
  • 捕獲 簽名不僅僅是語法监憎,它們是含有一列參數(shù)對象的 first-class 對象 鲸阔。同樣地,有一種含有參數(shù)集的數(shù)據(jù)...
    焉知非魚閱讀 560評論 0 0
  • 我叫楊甜,老楊同志是我爸瞒滴,可我自高中起開始稱他為老楊同志赞警。高中的時候老楊同志有了一輛老普桑愧旦,將辛苦了四年的面包車...
    22的2姑娘閱讀 305評論 0 0
  • 毒藥 本劇本純屬虛構(gòu)笤虫,如有雷同純屬巧合~ 版權(quán)歸屬創(chuàng)作者 第 [1] 幕 人物:工北[后簡稱工]祖凫,JOEY[后簡稱...
    X先生閱讀 512評論 0 0