V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
leyle
V2EX  ›  问与答

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

  •  
  •   leyle · 2019-08-10 11:05:53 +08:00 · 4022 次点击
    这是一个创建于 1715 天前的主题,其中的信息可能已经有所发展或是发生改变。
    就像对抗标价 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
        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 ....
    janus77
        9
    janus77  
       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
    tulongtou
        14
    tulongtou  
       2019-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 就很明显了
    reus
        29
    reus  
       2019-08-10 17:09:26 +08:00
    4.15 是两个数字,一个是 4,一个是 15,分别比较,不是比较字符串
    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   ·   我们的愿景   ·   实用小工具   ·   1785 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 16:28 · PVG 00:28 · LAX 09:28 · JFK 12:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.