开源夏令营之foldcolumn工具及解决方案(五)数值精度处理实现

来源:互联网 发布:怎么改mac地址 编辑:程序博客网 时间:2024/06/10 23:03

哪些列需要处理精度

满足下面两个条件的列才处理精度,否则原样输出:

(1)用户指定需要处理精度;

(2)该列是有效数值列,有效数值列要求列数据具有如下格式,且前缀和后缀中不能有数值,当然前后缀可以为空(参见链接),否则被认为是含多个数值而原样输出。每读入一行数据,在根据分隔符断列时,识别该列是否是有效数值列。


(这样实现比较简单,而且后面还可以判断前后缀的有效性,开始想了很多种不是有效数据列的情况,一一进行排除实现,没从 前缀+数值+后缀 这种格式考虑,导致实现起来很繁琐,浪费了不少时间。)

数值精度处理实现

如上面那样识别出数值部分后,处理精度就比较简单,然后将前缀+处理好精度的数值+后缀重新整理成字符形式nStr(称原来的列数据为str) , 以方便使用以前的自动换行输出列模块进行输出。由于nStr与str长度可能不能,如果将nStr还放在str原来的存储位置,需要移动后面列的数据,所以重新为nStr开辟了存储空间,并且将列的begin,end,cur指向此处相应位置。为什么这样做?因为读入一行数据断列后,各列的数据还是在原来位置存储,只是加了起始、结束索引,如下面:

(1)从文件(或其他)读入一行数据,保存在线性空间内,将数据按分隔符断列,为每列标记起始begin、结束位置end,并且将当前输出位置cur(用于输出)设为列起始位置如下:

(2)根据每列的列宽,输出每列的一行(超宽断行),并更新每列的当前位置,直到各列的当前位置等于各自的结束位置,然后重复(1)。

效果

下面是精度为3,2位时,以表格样式3的输出




0 0
原创粉丝点击