共计 713 个字符,预计需要花费 2 分钟才能阅读完成。
这是从最近一个项目上关于版本号解析引发出来的一个小插曲,我觉得挺有意思的,所有就记录了下来。
背景
出于写代码从严谨考虑,在给后端传版本号的时候多问了一句。“1.1”版本是写成“1.1”还是“1.01”呢?然后就有了这篇文章了。
可以先看一下,从标题写的这两个版本号,想必大家也能看出来一些区别。但是,区别有哪些呢?“1.01”比“1.1”多了个0,是吧?没错,就是多了这个0,就是因为这个0。可能你会想,这个多了个0怎么了?
好,我们慢慢来分析,我先说一下我的想法,看看我对版本号是怎么处理的,而且我觉得大多数人应该和我是一样的想法的。一般情况下,为了对比方便,我通常会通过小数点(“.”)来拆分,把小数点前面的分为一段,小数点后面的分为一段。分别是主版本(major),次版本(minor)。这个应该没什么问题,大家都一样。那么,对于”1.1″,主版本是”1″,次版本是”1″,而对于”1.01″,主版本是”1″,次版本是”01″,请注意,我这里都加了双引号(””),他们都是字符串。这样就拆分成了两个字段串,最后,int major = atoi(“1”); int minor = atoi(“1”); 或 int minor = atoi(“01”);然后major 等于1,minor也等于1,所以,”1.1″和”1.01″其实也没什么不一样是吧。
然后,重点来了,后端的兄弟说写成”1.01″,因为0.1和0.01是不一样的,可能是先入为主的原因吧,我一开没明白他说的点,直到,他跟我说0.1元和0.01元怎么能一样呢?哦,这下我明白了。哥们是真把他当小数处理的呀。
结论
当你听到一个你觉得很不理解的东西时,先别急着判断对错。先理解对方说的是什么。