我正在使用 Beyond Compare (3.3) 比较一些文件。
浮点数方面存在一些细微差异。
有没有办法告诉 BC 忽略小数点后某个位的差异?
答案1
Beyond Compare 的文本比较无法忽略小数点后某一位的差异。
可以将差异作为文本忽略,无论是纯文本还是正则表达式。
例如,忽略小数点后的所有数字字符:
- 在 Beyond Compare 3 的文本比较中打开文件。
- 点击规则工具栏按钮(裁判图标)。
- 前往重要性标签。
- 单击编辑语法按钮。
- 在上半部分语法选项卡,点击新的。
- 姓名:不重要的号码。
- 类别: 基本的
- 文本匹配:.\d+
- 查看正则表达式然后单击“确定”。
- 单击“确定”。
- 取消选中不重要的号码在语法元素列表中使其变得不重要。
- 单击“确定”。
- 确保视图 > 忽略不重要的差异已打开。
答案2
我想稍微扩展一下已经接受的答案。
首先,您应该\.\d+
在之前使用反斜杠,.
否则.
将匹配任何字符。
使用接受的解决方案,您可能会遇到不想要的数值问题,例如如果您想0.99
与进行比较1.01
。
据我所知,Beyond Compare 没有完美的解决方案,但你可以通过定义语法作为一个列表代替基本的这使得您可以拥有多条规则。
如果你像这样设置列表:
\.\d+
(0|1)\.\d+
(1|2)\.\d+
(2|3)\.\d+
(3|4)\.\d+
(4|5)\.\d+
(5|6)\.\d+
(6|7)\.\d+
(7|8)\.\d+
(8|9)\.\d+
(9|0)\.\d+
您将能够在 之前捕获单个整数位置的溢出.
。
但是,这不适用于更多整数位,因此如果您有109.99
和110.01
,这将失败并且仍然显示为差异。我尝试添加更多规则以支持更多整数位,例如(09|10)\.\d+
,但似乎不起作用。
.9
像vs 这样的一些特殊情况1.0
也将不起作用,因此请注意,接受的解决方案和我的解决方案都不完美,但它们可能会帮助您减少不必要的差异。