天天看點

開源夏令營之foldcolumn工具及解決方案(五)數值精度處理實作哪些列需要處理精度數值精度處理實作效果

哪些列需要處理精度

滿足下面兩個條件的列才處理精度,否則原樣輸出:

(1)使用者指定需要處理精度;

(2)該列是有效數值列,有效數值列要求列資料具有如下格式,且字首和字尾中不能有數值,當然前字尾可以為空(參見連結),否則被認為是含多個數值而原樣輸出。每讀入一行資料,在根據分隔符斷列時,識别該列是否是有效數值列。

開源夏令營之foldcolumn工具及解決方案(五)數值精度處理實作哪些列需要處理精度數值精度處理實作效果

(這樣實作比較簡單,而且後面還可以判斷前字尾的有效性,開始想了很多種不是有效資料列的情況,一一進行排除實作,沒從 字首+數值+字尾 這種格式考慮,導緻實作起來很繁瑣,浪費了不少時間。)

數值精度處理實作

如上面那樣識别出數值部分後,處理精度就比較簡單,然後将字首+處理好精度的數值+字尾重新整理成字元形式nStr(稱原來的列資料為str) , 以友善使用以前的自動換行輸出列子產品進行輸出。由于nStr與str長度可能不能,如果将nStr還放在str原來的存儲位置,需要移動後面列的資料,是以重新為nStr開辟了存儲空間,并且将列的begin,end,cur指向此處相應位置。為什麼這樣做?因為讀入一行資料斷列後,各列的資料還是在原來位置存儲,隻是加了起始、結束索引,如下面:

(1)從檔案(或其他)讀入一行資料,儲存線上性空間内,将資料按分隔符斷列,為每列标記起始begin、結束位置end,并且将目前輸出位置cur(用于輸出)設為列起始位置如下:

開源夏令營之foldcolumn工具及解決方案(五)數值精度處理實作哪些列需要處理精度數值精度處理實作效果

(2)根據每列的列寬,輸出每列的一行(超寬斷行),并更新每列的目前位置,直到各列的目前位置等于各自的結束位置,然後重複(1)。

效果

下面是精度為3,2位時,以表格樣式3的輸出

開源夏令營之foldcolumn工具及解決方案(五)數值精度處理實作哪些列需要處理精度數值精度處理實作效果

繼續閱讀