我为 Windows 10 修复了一个 bug(2)
问题正是在于此,写这段代码的人以为代码会按预料中执行:
逐一运行后如下:
常见情况下的确如此。 但问题在于:“如果起始日期为某月的第 31 天,结束日期所在的月份只有 30 天,该以哪天作为结束的标志?”对于 Windows.Globalization.Calendar.AddMonths(Int32) 来说,它的答案显然是“在第 30 天”。 具体而言,这就意味着: “July 31st + 4 Months = November 30th” 然而实际情况是: “July 31st + 5 Months = December 31st” 这就引起了“差一错误”。逐步调用 接着 Peter 在 Windows 计算器的 GitHub 仓库提交了一个 PR 以进行最小化“修复”。
Peter 为修复加上了引号,是因为它最后计算出的结果如下: Peter 表示,如果各位认可“7月31日+ 4个月= 11月30日”这样的结果,他认为这在技术上是正确的。虽然完整的结果不符合大众对日期间隔天数的阅读习惯,但至少不会出错。 不过这件事中,最令人深刻的是微软最后合并了 Peter 提交的 PR 以修复这个问题。 这说明微软的开源项目不仅仅是将代码托管在 GitHub 而已,而是会听取来自社区用户的建议和改进。 那么问题来了,如果是你,你会怎样解决这个错误呢? 【编辑推荐】
点赞 0 (编辑:ASP站长网) |