Vimscript 數(shù)字

2018-02-24 16:02 更新

現(xiàn)在是時(shí)候開始深入討論你能用到的變量類型。首先從數(shù)值類型開始吧。

Vimscript有兩種數(shù)值類型:Number和Float。一個(gè)Number是32位帶符號(hào)整數(shù)。一個(gè)Float是浮點(diǎn)數(shù)。

數(shù)字(Number)形式

你可以通過一些不同的方式設(shè)置Number的格式。執(zhí)行下面的命令:

:echom 100

沒什么好驚訝的 -- Vim顯示100。現(xiàn)在執(zhí)行下面的命令:

:echom 0xff

這次Vim顯示255。你可以加0x0X前綴來(lái)指定16進(jìn)制的數(shù)字?,F(xiàn)在執(zhí)行下面的命令:

:echom 010

你也可以加0前綴來(lái)使用八進(jìn)制。不過由于容易混淆,用的時(shí)候要保持頭腦清醒。嘗試執(zhí)行下面的命令:

:echom 017
:echom 019

第一個(gè)命令中,Vim將打印出15,因?yàn)?code>17在八進(jìn)制中等于十進(jìn)制的15。 在第二個(gè)命令中,Vim把數(shù)字的進(jìn)制當(dāng)作十進(jìn)制,即使它以0開頭,因?yàn)樗豢赡苁且粋€(gè)八進(jìn)制數(shù)字。

因?yàn)閂im會(huì)一聲不吭地處理掉這樣的錯(cuò)誤,我建議盡量避免使用八進(jìn)制數(shù)字。

浮點(diǎn)數(shù)(Float)格式

Float也可以用許多方式進(jìn)行定制。執(zhí)行下面的命令:

:echo 100.1

注意這里我們使用了echo而不是更常用的echom。待會(huì)我會(huì)解釋為什么這樣做(譯注:當(dāng)然你現(xiàn)在可以試試看)。

Vim如愿輸出了100.1。你也可以指定指數(shù)形式。執(zhí)行下面命令:

:echo 5.45e+3

Vim輸出5450.0。也可以用負(fù)的指數(shù)。執(zhí)行下面命令:

:echo 15.45e-2

Vim輸出0.1545。在10的冪前面的+-是可選的。如果沒有,就默認(rèn)為正數(shù)。執(zhí)行下面的命令:

:echo 15.3e9

Vim將輸出等價(jià)的1.53e10。小數(shù)點(diǎn)和小數(shù)點(diǎn)后面的數(shù)字是_必須要有_的。執(zhí)行下面命令并看它為何出錯(cuò):

:echo 5e10

強(qiáng)制轉(zhuǎn)換

當(dāng)你在運(yùn)算,比較或其他操作中混合使用Number和Float類型,Vim將把Number轉(zhuǎn)換成Float, 以Float格式作為結(jié)果。執(zhí)行下面命令:

:echo 2 * 2.0

Vim輸出4.0。

除法

在兩個(gè)Number之間的除法中,余數(shù)會(huì)被丟棄。執(zhí)行下面命令:

:echo 3 / 2

Vim輸出1。如果你希望Vim使用浮點(diǎn)數(shù)除法,至少有一個(gè)數(shù)字必須是Float, 這樣剩下的數(shù)字也會(huì)被轉(zhuǎn)換成浮點(diǎn)數(shù)。執(zhí)行下面命令:

:echo 3 / 2.0

Vim輸出1.53被強(qiáng)制轉(zhuǎn)換成一個(gè)浮點(diǎn)數(shù),然后運(yùn)行了普通的浮點(diǎn)數(shù)除法。

練習(xí)

閱讀:help Float。什么情況下在Vimscript中不能用浮點(diǎn)數(shù)?

閱讀:help floating-point-precision。這意味著你在寫一個(gè)處理浮點(diǎn)數(shù)的Vim插件時(shí)需要注意什么?

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)