【发布时间】:2011-07-09 03:07:28
【问题描述】:
我的正则表达式很生锈。 vim怎么能用来改变十进制数的精度。
例如:
变更 30.2223221 8188.2121213212 至 30.22 8188.21
【问题讨论】:
标签: regex vim decimal precision
我的正则表达式很生锈。 vim怎么能用来改变十进制数的精度。
例如:
变更 30.2223221 8188.2121213212 至 30.22 8188.21
【问题讨论】:
标签: regex vim decimal precision
可能使用 vim 内部搜索/替换,但我会使用“perldo”:
:perldo s/(\d+\.\d+)/sprintf "%.2f", $1/eg
【讨论】:
仅使用 VimL:
:%s/\d\+\.\d\+/\=printf('%.2f',str2float(submatch(0)))/g
【讨论】:
如果您只想截断最后一位而不是四舍五入,
:%s/(\d+\.\d\d)\d+/\1/g
【讨论】:
基于之前的答案,使用 VimL,用于负数和指数符号:
:%s/\c\v[-]=\d+\.\d+(e[+-]\d+)=/\=printf('%.2f',str2float(submatch(0)))/g
【讨论】: