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就是簡單去掉小數部分。
最後更新:2017-07-18 20:35:37