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

本文介绍 Vim 编辑器中支持的浮点数计算功能,包括三角函数、数学计算函数、浮点数到整数转换等。通过具体示例展示了不同函数的使用方法及其结果。

浮点数计算函数

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

三角函数

  • sin() : sine正弦函数
  • cos() : cosine余弦函数
  • tan() : tangent正切函数
  • asin() : arc sine反正弦函数
  • acos() : arc cosine反余弦函数
  • atan() : arc tangent反正切函数
  • atan2({X坐标},{Y坐标}) : arc tangent反正切函数
  • sinh() : hyperbolic sine 双曲正弦函数
  • cosh() : hyperbolic cosine双曲余弦函数
  • tanh() : hyperbolic tangent双曲正切函数

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

数学计算

  • abs(): 绝对值
  • fmod(): 浮点余数
  • exp(): e的乘方
  • log(): 自然对数
  • log10(): 以10为底的对数
  • pow(): 阶乘
  • sqrt(): 平方根,如果求负数的平方根,返回NaN.
  • isnan(): 判断是否为NaN。比如isnan(0.0/0.0)为真。

浮点数转整数

  • float2nr() : 将浮点数转成整数。
  • round() : round off, 四舍五入
  • ceil(): round up, 上舍入
  • floor(): round down,下舍入
  • trunc(): 简单截断小数点后面的数

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

function Float2Number(arg)
        echo "Orginal value:"
        echo a:arg
        echo "float2nr:"
        echo float2nr(a:arg)
        echo "round:"
        echo round(a:arg)
        echo "ceil:"
        echo ceil(a:arg)
        echo "floor:"
        echo floor(a:arg)
        echo "trunc:"
        echo trunc(a:arg)
endfunction

我们先试试2.06:

Orginal value:
2.06
float2nr:
2
round:
2.0
ceil:
3.0
floor:
2.0
trunc:
2.0

我们再试试122.667:

Orginal value:
122.667
float2nr:
122
round:
123.0
ceil:
123.0
floor:
122.0
trunc:
122.0

我们再看一个负数:-9.08

Orginal value:
-9.08
float2nr:
-9
round:
-9.0
ceil:
-9.0
floor:
-10.0
trunc:
-9.0

最后来一个五入的负数:

Orginal value:
-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就是简单去掉小数部分。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jtag特工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值