Vimscript 數(shù)字

2018-02-24 16:02 更新

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

Vimscript有兩種數(shù)值類型:Number和Float。一個Number是32位帶符號整數(shù)。一個Float是浮點數(shù)。

數(shù)字(Number)形式

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

:echom 100

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

:echom 0xff

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

:echom 010

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

:echom 017
:echom 019

第一個命令中,Vim將打印出15,因為17在八進制中等于十進制的15。 在第二個命令中,Vim把數(shù)字的進制當作十進制,即使它以0開頭,因為它不可能是一個八進制數(shù)字。

因為Vim會一聲不吭地處理掉這樣的錯誤,我建議盡量避免使用八進制數(shù)字。

浮點數(shù)(Float)格式

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

:echo 100.1

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

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

:echo 5.45e+3

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

:echo 15.45e-2

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

:echo 15.3e9

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

:echo 5e10

強制轉(zhuǎn)換

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

:echo 2 * 2.0

Vim輸出4.0。

除法

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

:echo 3 / 2

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

:echo 3 / 2.0

Vim輸出1.5。3被強制轉(zhuǎn)換成一個浮點數(shù),然后運行了普通的浮點數(shù)除法。

練習

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

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

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號