Vim技能修炼教程(16) - 浮点数计算函数

摘要:浮点数计算函数

浮点数计算函数

这一节的所有函数,只有在vim编译时支持了+float时才有效。

三角函数

sin():sine正弦函数

cos():cosine余弦函数

tan():tangent正切函数

asin():arcsine反正弦函数

acos():arccosine反余弦函数

atan():arctangent反正切函数

atan2({X坐标},{Y坐标}):arctangent反正切函数

sinh():hyperbolicsine双曲正弦函数

cosh():hyperboliccosine双曲余弦函数

tanh():hyperbolictangent双曲正切函数

这些函数基本上都是对应的C函数的封装。比如对于双曲正弦不熟悉的话,可以参看mansinh.如果不理解atan2,可以manatan2.

数学计算

abs():绝对值

fmod():浮点余数

exp():e的乘方

log():自然对数

log10():以10为底的对数

pow():阶乘

sqrt():平方根,如果求负数的平方根,返回NaN.

isnan():判断是否为NaN。比如isnan(0.0/0.0)为真。

浮点数转整数

float2nr():将浮点数转成整数。

round():roundoff,四舍五入

ceil():roundup,上舍入

floor():rounddown,下舍入

trunc():简单截断小数点后面的数

我们来写个函数测试下它们的功能:

functionFloat2Number(arg)

echo"Orginalvalue:"

echoa:arg

echo"float2nr:"

echofloat2nr(a:arg)

echo"round:"

echoround(a:arg)

echo"ceil:"

echoceil(a:arg)

echo"floor:"

echofloor(a:arg)

echo"trunc:"

echotrunc(a:arg)

endfunction

我们先试试2.06:

Orginalvalue:

2.06

float2nr:

2

round:

2.0

ceil:

3.0

floor:

2.0

trunc:

2.0

我们再试试122.667:

Orginalvalue:

122.667

float2nr:

122

round:

123.0

ceil:

123.0

floor:

122.0

trunc:

122.0

我们再看一个负数:-9.08

Orginalvalue:

-9.08

float2nr:

-9

round:

-9.0

ceil:

-9.0

floor:

-10.0

trunc:

-9.0

最后来一个五入的负数:

Orginalvalue:

-65.96

float2nr:

-65

round:

-66.0

ceil:

-65.0

floor:

-66.0

trunc:

-65.0

我们总结一下:

除了float2nr,其它所有截断的结果还是浮点数

float2nr的策略跟trunc一致,也就是说,如果要想四舍五入的话,先做round再float2nr.

round是四舍五入,不管正负,都是四舍五入。

ceil取大于等于它的最小整数。

floor取小于等于它的最大整数。

trunc就是简单去掉小数部分。

用云栖社区APP,舒服~摘要:浮点数计算函数

浮点数计算函数

这一节的所有函数,只有在vim编译时支持了+float时才有效。

三角函数

sin():sine正弦函数

cos():cosine余弦函数

tan():tangent正切函数

asin():arcsine反正弦函数

acos():arccosine反余弦函数

atan():arctangent反正切函数

atan2({X坐标},{Y坐标}):arctangent反正切函数

sinh():hyperbolicsine双曲正弦函数

cosh():hyperboliccosine双曲余弦函数

tanh():hyperbolictangent双曲正切函数

这些函数基本上都是对应的C函数的封装。比如对于双曲正弦不熟悉的话,可以参看mansinh.如果不理解atan2,可以manatan2.

数学计算

abs():绝对值

fmod():浮点余数

exp():e的乘方

log():自然对数

log10():以10为底的对数

pow():阶乘

sqrt():平方根,如果求负数的平方根,返回NaN.

isnan():判断是否为NaN。比如isnan(0.0/0.0)为真。

浮点数转整数

float2nr():将浮点数转成整数。

round():roundoff,四舍五入

ceil():roundup,上舍入

floor():rounddown,下舍入

trunc():简单截断小数点后面的数

我们来写个函数测试下它们的功能:

functionFloat2Number(arg)

echo"Orginalvalue:"

echoa:arg

echo"float2nr:"

echofloat2nr(a:arg)

echo"round:"

echoround(a:arg)

echo"ceil:"

echoceil(a:arg)

echo"floor:"

echofloor(a:arg)

echo"trunc:"

echotrunc(a:arg)

endfunction

我们先试试2.06:

Orginalvalue:

2.06

float2nr:

2

round:

2.0

ceil:

3.0

floor:

2.0

trunc:

2.0

我们再试试122.667:

Orginalvalue:

122.667

float2nr:

122

round:

123.0

ceil:

123.0

floor:

122.0

trunc:

122.0

我们再看一个负数:-9.08

Orginalvalue:

-9.08

float2nr:

-9

round:

-9.0

ceil:

-9.0

floor:

-10.0

trunc:

-9.0

最后来一个五入的负数:

Orginalvalue:

-65.96

float2nr:

-65

round:

-66.0

ceil:

-65.0

floor:

-66.0

trunc:

-65.0

我们总结一下:

除了float2nr,其它所有截断的结果还是浮点数

float2nr的策略跟trunc一致,也就是说,如果要想四舍五入的话,先做round再float2nr.

round是四舍五入,不管正负,都是四舍五入。

ceil取大于等于它的最小整数。

floor取小于等于它的最大整数。

trunc就是简单去掉小数部分。

用云栖社区APP,舒服~

相关推荐