Vim技能修炼教程(16) - 浮点数计算函数
浮点数计算函数
这一节的所有函数,只有在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就是简单去掉小数部分。
Vim技能修炼教程(16) - 浮点数计算函数的更多相关文章
- Vim技能修炼教程(2) - 语法高亮速成
语法高亮速成 我们继续在人间修行Vim技能之旅.上一次我们学习了如何通过vundle安装插件,这次我们迅速向写插件的方向挺进. 我们先学习一个最简单的语法高亮插件的写法. 语法高亮基本上是由三部分组成 ...
- Vim技能修炼教程(15) - 时间和日期相关函数
Vimscript武器库 前面我们走马观花地将Vimscript的大致语法过了一遍.下面我们开始深入看一下Vimscript都给我们准备了哪些武器.如果只用这些武器就够了,那么就太好了,只用Vimsc ...
- Vim技能修炼教程(13) - 变量
VimScript变量 上节我们介绍了Python和Ruby来编写Vim插件的方式. 不过,Python和Ruby并不是所有的Vim都支持的功能,如果以最小依赖的原则来说,还是原汁原味的Vimscri ...
- Vim技能修炼教程(10) - 代码跳转
程序员功能 前面我们用了5讲的篇幅来讲基本编辑的基本功:第4讲是基本操作,第5讲是操作符,第6讲行编辑ex命令,第7讲可视模式,第8讲多窗口,第9讲缓冲区和标签页. 从这一讲开始,我们从通用功能向程序 ...
- Vim技能修炼教程(3) - 语法高亮进阶
语法高亮进阶 首先我们复习一下上节学到的三个命令: * syntax match用于定义正则表达式和规则的对应 * highlight default定义配色方案 * highlight link将正 ...
- Vim技能修炼教程(14) - 写个ex命令吧
写个ex命令吧 我们第二节开始就写了语法高亮的插件.这一节,我们学习第二种插件的写法,就是写个我们自己的ex命令. 自定义ex命令的命令是:command,我们在~/.vim/下建立一个plugin目 ...
- Vim技能修炼教程(12) - Vim的脚本语言支持
Vim的脚本语言支持 本节开始,我们正式接触vimscript这门古老的脚本语言. 首先要说明,vim支持的扩展语言很多,比如python, python3, ruby, lua,tcl等常见脚本语言 ...
- Vim技能修炼教程(8) - 多窗口
多窗口 如果一个vim只能开一个窗口,那肯定是有点low.尤其是写代码的时候,打开多个文件是经常的需求. 速成教程 横着切成两个 :split 文件名 上下切换窗口 Ctrl-W加上上下键,可以实现上 ...
- Vim技能修炼教程(1) - 使用vundle管理插件
世界上有两个伟大的编辑器:一个是emacs,一个是vi.它们从诞生以来,一直在Unix/Linux世界得到最广泛的支持. 尽管过了几十年,在Windows平台上和跨平台上有层出不穷的后起之秀不断挑战它 ...
随机推荐
- 20144303 《Java程序设计》第八周学习总结
20144303 <Java程序设计>第八周学习总结 教材学习内容总结 第十五章 1.日志API简介: java.util.logging包提供了日志功能相关类与接口,不必额外配置日志组件 ...
- 游戏服务器的思考之三:谈谈MVC
游戏服务器也是基于MVC架构的吗?是的,所有的应用系统都是基于MVC架构的,这是应用系统的天性.不管是客户端还是后台,都包含模型.流程.界面这3个基本要素:不同类型的应用,3要素的“重量”可能各有偏差 ...
- Jquery5 基础 DOM 和 CSS 操作
学习要点: 1.DOM 简介 2.设置元素及内容 3.元素属性操作 4.元素样式操作 5.CSS 方法 DOM 是一种文档对象模型.方便开发者对HTML 结构元素内容进行展示和修改.在 JavaScr ...
- sqlite的Top筛选
select [CollectDateTime] as '时间',[Channel_34] as '通道34',[Channel_54] as '通道54' from [DataTable] wher ...
- jquery 报错 $.cookie is not a function()
jquery 报错 $.cookie is not a function() ——我是之前可以运行的项目,突然报这个错误,很奇怪. 这是jquery的cookie插件报错. 插件名: jquery.c ...
- POJ 2299 Ultra-QuickSort(树状数组+离散化)
http://poj.org/problem?id=2299 题意:给出一组数,求逆序对. 思路: 这道题可以用树状数组解决,但是在此之前,需要对数据进行一下预处理. 这道题目的数据可以大到999,9 ...
- 比较好的Json 格式数据
{ "81040753986": [{ "order_info": { "unique_package_reference": " ...
- SPOJ8222 NSUBSTR - Substrings
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- 使用SoupUI进行简单的WebService接口测试
1.工具介绍 SoapUI是一个开源测试工具,通过soap/http来检查.调用.实现Web Service的功能/负载/符合性测试.该工具既可作为一个单独的测试软件使用,也可利用插件集成到Eclip ...
- [PostgreSql]PostgreSql创建函数及函数的执行
1.准备好创建函数的脚本 -- FUNCTION: public.dynamic_placelist_select(integer, timestamp without time zone) -- D ...