版本号中 4.9 大于 4.15 的第一想法是如何运转出来的? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
leyle
V2EX    问与答

版本号中 4.9 大于 4.15 的第一想法是如何运转出来的?

  •  
  • /li>
  •   leyle 2019-08-10 11:05:53 +08:00 4615 次点击
    这是一个创建于 2284 天前的主题,其中的信息可能已经有所发展或是发生改变。
    就像对抗标价 399 这样的错觉,我都是看到 39x 这样的自动升级成 400,然后一下子就看清楚了价格了。

    有什么好办法,能够快速的看出来 4.15 大于 4.9
    40 条回复    2019-08-11 12:51:49 +08:00
    yzkos
        1
    yzkos  
       2019-08-10 11:08:18 +08:00
    4.9 再往上发版的时候变 5.0
    iPhoneXI
        2
    iPhoneXI  
       2019-08-10 11:08:56 +08:00 via Android
    因为语义化版本号不能补 0,所以经常和小数混淆
    三位还好办,两位只能看历史版本规律或者靠猜了
    Kagari
        3
    Kagari  
       2019-08-10 11:18:34 +08:00   1
    我现在才意识到数字上 4.15<4.9,上一个贴我看完标题的反应是“这不是很明显 4.15>4.9 吗”
    流程可能是这样的,两边都是 4,4 和 4 约掉,然后 15>9
    luob
        4
    luob  
       2019-08-10 11:21:02 +08:00
    4.9.9.9.9,就是不发布 4.10
    tabris17
        5
    tabris17  
       2019-08-10 11:28:00 +08:00
    4.09
    4.15
    Trim21
        6
    Trim21  
       2019-08-10 11:29:01 +08:00 via Android
    @luob python 的 html5lib 版本号 0.9999999999999 …
    MrCurly /td>
        7
    MrCurly  
       2019-08-10 11:39:23 +08:00   1
    一开始我也没看懂, 后来听人念出来之后我就再也没糊涂过了,四点十五,四点九,很明显十五大哈哈
    vocaloid
        8
    vocaloid  
       2019-08-10 11:58:00 +08:00 via Android
    我很好奇为啥发的时候不发 4.09 ....
    rb6221
        9
    rb6221  
       2019-08-10 12:00:38 +08:00 via iPhone   1
    因为 4.9 不是十进制数
    不是十进制数
    不是十进制数
    所以.9 不会再升一位
    loveuqian
        10
    loveuqian  
       2019-08-10 12:10:59 +08:00 via iPhone
    在苹果这边,你发了 4.9,之后是发不出 4.15 的
    我这边都是最好加个 4.09
    mantout
        11
    mantout  
       2019-08-10 12:20:15 +08:00
    @vocaloid #8 发 4.1 4.2 的时候并不能确定是否有 4.10+的版本,也就没有必要预留两位。万一版本数超过 99,达到了 4.100 ,是不是要预留 3 位,从最开始就发 4.001 呢
    sanwen
        12
    sanwen  
       2019-08-10 12:22:20 +08:00 via Android
    ???,我是没看懂吗?按点分割,按分割后按结果比较不就行了?
    Tumblr
        13
    Tumblr  
       2019-08-10 12:32:43 +08:00
    拆解喽……比如 Version 5.1.18362.145:
    Major version: 5
    Minor version: 1
    Build: 18362
    Revision: 145
    DonaidTrump
        14
    DonaidTrump  
       019-08-10 12:48:00 +08:00 via iPhone
    要不然就 4.90 要不 4.1.5,不然小数点后面有一位有两位的不好比较
    fannas
        15
    fannas  
       2019-08-10 12:49:28 +08:00 via Android
    所有 ci cd tool 里 x.9 之后都是 x.10
    CEBBCAT
        16
    CEBBCAT  
       2019-08-10 12:50:16 +08:00 via Android
    小数点是分隔符,我是这样理解的
    mrcn
        17
    mrcn  
       2019-08-10 12:52:53 +08:00 via Android
    讨厌这种容易引起歧义的版本号,每次都要靠日期才能判断到底哪个是新的。
    MarginK
        18
    MarginK  
       2019-08-10 13:36:59 +08:00
    @loveuqian 你确定苹果不行?你要不再试试?
    iwtbauh
        19
    iwtbauh  
       2019-08-10 13:44:16 +08:00 via Android   1
    “如何看出来”?如果大脑无法分辨出来,可以借助 shell

    GNU sort 有一个 -V 比较版本选项

    echo -e "4.15\n4.9" | sort -V
    4.9
    4.15

    如果不方便使用 GNU 扩展。还有就是把取出 . 分割的全部数字,然后补 0 到 3 位,再 sort -n

    比如 printf "%03d%03d" `grep -Eo '[0-9]+\.[0-9]' | tr '.' ' `'
    Carseason
        20
    Carseason  
       2019-08-10 14:15:45 +08:00
    再阔展一下小数点。
    下次版本改成
    4.15.00
    然后慢慢的把旧版本统一称呼为 4.9.00
    ShangAliyun
        21
    ShangAliyun  
       2019-08-10 14:20:15 +08:00
    明显是数据库用了小数存储
    ziseyinzi
        22
    ziseyinzi  
       2019-08-10 14:58:52 +08:00 via Android   2
    因为点.dot 这个东西在这里不是小数点
    laozhoubuluo
        23
    laozhoubuluo  
       2019-08-10 15:14:34 +08:00 via Android
    4.9=4+90/100
    4.15=4+15/100

    所以 4.9 是大于 4.15 的。
    为了方便比较就不约分了。
    laozhoubuluo
        24
    laozhoubuluo  
       2019-08-10 15:19:01 +08:00 via Android   1
    这就是有的地方要出 4.9 之后,就不允许再出 4.1x 的原因了。
    判定的话就是记得在判断版本号的时候整数位划了,完了直接比后面。
    不过不建议非得用这种版本号。很容易混乱。
    liuzhaowei55
        25
    liuzhaowei55  
       2019-08-10 15:24:56 +08:00 via iPhone
    我觉得这个问题不成立,至少题主说了是版本号的情况下我没觉得 4.9 比 4.15 大。
    当然我默认大家都了解语义化版本号: https://semver.org/lang/zh-CN/
    iPhoneXI
        26
    iPhoneXI  
       2019-08-10 16:10:18 +08:00 via Android
    @liuzhaowei55 了解不代表习惯,我认为它那个前面不能补 0 的规定就很扯淡,所以我自己项目小版本号从来不超过 9
    acrisliu
        27
    acrisliu  
       2019-08-10 16:25:35 +08:00 via Android
    semver
    vincel
        28
    vincel  
       2019-08-10 16:43:01 +08:00
    还是约束不够好 4.15.0 和 4.9.0 就很明显了
    td width="auto" valign="top" align="left">
        29
    reus  
       2019-08-10 17:09:26 +08:00
    4.15 是两个数字,一个是 4,一个是 15,分别比较,不是比较字符串
    reus
    Huelse
        30
    Huelse  
       2019-08-10 17:24:20 +08:00
    4.15 并不是传统意义的浮点数,.点只是一个分隔符
    Meltdown
        31
    Meltdown  
       2019-08-10 18:47:32 +08:00 via Android
    内核 4.15 大于 4.9 版本啊
    Meltdown
        32
    Meltdown  
       2019-08-10 18:48:50 +08:00 via Android
    看错了,尴尬…
    WispZhan
        33
    WispZhan  
       2019-08-10 18:52:34 +08:00
    版本号是:major.minor.patch
    或者
    major.minor

    “ major ”, “ minor ”, “ patch ” 都是独立的 Int 类型。

    判断版本的时候,请用 "." 去做 split。 然后分别对每个部分进行 Parse Int。

    https://semver.org/
    deorth
        34
    deorth  
       2019-08-10 23:34:55 +08:00
    有的项目已经开始用日期代替版本号了
    efaun
        35
    efaun  
       2019-08-11 00:08:35 +08:00
    以日期作为版本号市最科学的
    loveuqian
        36
    loveuqian  
       2019-08-11 00:25:49 +08:00 via iPhone
    @MarginK
    确定啊,亲身经历过啊,除非是又有了修改
    gamexg
        37
    gamexg  
       2019-08-11 01:44:09 +08:00
    @deorth #34
    @efaun

    同时维护多个大版本时还是需要这种版本号,例如 python 2、3 php5、7。
    ik
        38
    ik  
       2019-08-11 02:30:05 +08:00 via iPhone
    慌了,我也要想半天才能想到哪个大哪个小。
    msg7086
        39
    msg7086  
       2019-08-11 11:07:35 +08:00
    4,9 和 4,15 是不是就不会搞混了?
    这个点不是小数点,是分隔符。
    hstdt
        40
    hstdt  
       2019-08-11 12:51:49 +08:00 via iPhone
    多用这种方式,熟悉了就好了呗
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5365 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 03:46 PVG 11:46 LAX 19:46 JFK 22:46
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86