数字

现在是时候开始进一步看看可以使用的不同类型的变量了。首先,我们会学习 Vim 的数值类型。

Vimscript 有两种数值变量:整数和浮点数。整数是32位的带符号整数。浮点数是带小数点的数字。

整数格式

你可以用一些不同的方式来指定整数。运行以下命令:

:echom 100

这里没有什么意外 —— Vim 显示 100。现在运行命令:

:echom 0xff

这次 Vim 显示 255。你可以通过加 0x0X 前缀来指定十六进制的整数。 现在运行命令:

:echom 010

你也可以用 0 开始一个整数来指定八进制。对这点要小心,因为很容易会犯错。 试试以下命令:

:echom 017
:echom 019

对于第一个命令,Vim 会打印 15,因为八进制的 17 等于十进制的 15。 对于第二个命令,Vim 把它当做一个十进制,即使是以 0 开头,因为这并不是一个合法的八进制整数。

在这种情况下,因为 Vim 默默的做了错误的事,所以我建议在可能的情况下还是避免使用八进制。

浮点数格式

浮点数也可以用多钟方式来指定。运行以下命令:

:echo 100.1

注意这里我们使用了 echo 而不是经常使用的 echom。我们马上会讲到为什么。

Vim 正如预期显示 100.1。你也可以使用指数计数制。运行命令:

:echo 5.45e+3

Vim 显示 5450.0。你也可以使用负指数。运行命令:

:echo 15.45e-2

Vim 显示 0.1545。十幂方前的 +- 是可选的。如果被省略了,那么就假设为正的。 运行以下命令:

:echo 15.3e9

Vim 会显示 1.53e10,这是相等的。十进制小数点和后面的数字不是可选的。 运行以下命令,会看到崩溃:

:echo 5e10

强制

当你通过计算、比较或任何其他的操作结合一个整数和一个浮点数,Vim 会把整数转换为浮点数, 最终产生一个浮点数。运行以下命令:

:echo 2 * 2.0

Vim 显示 4.0

除法

当对两个整数做除法时,余数就会被舍弃。运行以下命令:

:echo 3 / 2

Vim 显示 1。如果你想 Vim 执行浮点除法,那其中一个必须为浮点数, 它会导致另外一个数字也被强制转换为浮点数。运行命令:

:echo 3 / 2.0

Vim 显示 1.53 被强制转换为浮点数,然后执行标准的浮点数除法。

练习

阅读 :help Float。在 Vimscript 中,浮点数可能在什么时候不能正常工作?

阅读 :help floating-point-precision。如果你正在写一个处理浮点数的 Vim 插件, 这可能表示什么意义?

原文地址:http://learnvimscriptthehardway.stevelosh.com/chapters/25.html