[20170725]vim呼叫bccalc外掛問題.txt

lfree發表於2017-07-26

[20170725]vim呼叫bccalc外掛問題.txt

http://blog.itpub.net/267265/viewspace-2140886/
http://blog.itpub.net/267265/viewspace-2140823/
http://blog.itpub.net/267265/viewspace-2140602/

--//我個人很喜歡在vim呼叫bc做各種計算,使用外掛bccale,參考前面的連結.
--//今天在使用時遇到1個問題,做一個記錄與分析:

1/30000*325=.0183333333333333225
--//注不需要輸入等號,打入\bx.顯示結果.

--//而我在bc -l下執行如下:
1/30000*325
.01083333333333333225

--//很明顯外掛bccalc存在明顯嚴重錯誤,中間少了1個0.
--//而我也建立一些快捷:

noremap  <Leader>cc Yp!!bc -lq<CR>kA = <ESC>J
noremap  <Leader>ch YpIobase=16;<ESC>!!bc -lq<CR>kA = 0x<ESC>Jxguu
noremap  <Leader>cd YpgUU:s/0x//gei<CR>Iibase=16;<ESC>!!bc -lq<CR>kA = <ESC>J

--//想完善看看實現oracle資料塊轉換,以及scn拆分為scn_wrap,scn_base的計算.
noremap  <Leader>c22 Y2pA/4194304<ESC>!!bc -q<CR>jA%4194304<ESC>!!bc -q<CR>2kA = set dba <ESC>3Js,<ESC>
noremap  <Leader>c32 Y2pA/4294967296<ESC>!!bc -q<CR>jA%4294967296<ESC>!!bc -q<CR>2kA = scn_wrap,scn_base: <ESC>3Js,<ESC>
noremap  <Leader>c16 Y2pA/65536<ESC>!!bc -q<CR>jA%65536<ESC>!!bc -q<CR>2kA = /16 %16: <ESC>3Js,<ESC>

--//打入\cc.可以發現計算是正確的.
1/30000*325 = .01083333333333333225

--//可以發現計算是正確的.那麼就是外掛存在問題.我仔細跟蹤外掛的執行.
let answer = system ("echo " . str . " \| bc -l " . preload)

--//我使用vim版本7.4,在linux下我也做了測試,問題一樣.再寫一個簡單的例子:

0.010007=.017
0.01020300=.010203
0.010230=.01023
0.010604=.01064
0.0100070=.010007

--//莫名奇妙!!0.010007=.017,0.010604=.01064.而我在寫成0.0100070結果有正確.
--//看來使用外掛bccalc要小心.如果你寫成如下:

1/30000*325*100=1.083333333333333225
--//又是正確的.回家測試vim 8.0版本看看.在家裡使用8.0問題依舊.不知道問題在那裡.僅僅做一個記錄.

0.01020300=.010203
0.010703=.01073

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2142560/,如需轉載,請註明出處,否則將追究法律責任。

相關文章