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,舒服~