V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
razrlele
V2EX  ›  Android

Android L 神级 Bug

  •  
  •   razrlele · 2014-11-30 19:44:51 +08:00 · 11124 次点击
    这是一个创建于 3678 天前的主题,其中的信息可能已经有所发展或是发生改变。
    
    26 条回复    2014-12-12 00:03:46 +08:00
    Mutoo
        1
    Mutoo  
       2014-11-30 19:46:58 +08:00
    这没有什么啦,js 里:
    > 0.1+0.2
    0.30000000000000004

    参见 IEEEE754
    ufo22940268
        2
    ufo22940268  
       2014-11-30 19:49:36 +08:00
    刚刚试了下,发现只有这两个数字相减才会,这是为什么呢
    Automan
        3
    Automan  
       2014-11-30 19:55:16 +08:00
    计算器居然不是高精度= =
    Xhybrid
        4
    Xhybrid  
       2014-11-30 20:00:38 +08:00 via Android
    貌似跟计算机的存储方式有关,都是01存储的,不可能精确把
    imgalaxy
        5
    imgalaxy  
       2014-11-30 20:05:21 +08:00
    http://tieba.baidu.com/p/1380632364
    几年前都有BUG。。。。
    razrlele
        6
    razrlele  
    OP
       2014-11-30 20:06:07 +08:00
    @Mutoo
    刚才用代码测试了一下:
    double型变量输出15位小数的结果是0.5999999999999994
    float型变量输出15位小数的结果是0.599998474121094

    看来这果然不是bug。。。

    @Automan
    这里面用的是double型变量,double型变量可以表示的数值范围是+/- 1.79769e+308,对于手机计算器一般应该是够了吧
    ETiV
        7
    ETiV  
       2014-11-30 20:07:31 +08:00
    我记得刚2000年左右那会儿, 某天中午看CCTV, 里面爆了一个卡西欧计算器的BUG.

    2*2*2*....*2 加 n(忘了是几次了...) 次, 最后的数是奇数.

    都是整数, 也会出错.
    rinehart
        8
    rinehart  
       2014-11-30 20:09:14 +08:00   ❤️ 1
    这个实现跟你的手机的厂商是否有对libm进行“优化”有关系
    Automan
        9
    Automan  
       2014-11-30 20:11:09 +08:00
    @razrlele 一般来说计算器应用在这种范围都不该用double的。。。几次计算下来就有误差了
    Cee
        10
    Cee  
       2014-11-30 20:12:51 +08:00
    不是有个笑话是什么算2500/50 按了一下没反应 结果再按一下是1么(
    razrlele
        11
    razrlele  
    OP
       2014-11-30 20:19:14 +08:00
    @Cee 这两个梗不一样诶。。。٩◔̯◔۶

    这个地方应该是计算机本身运算器的问题

    (不过我刚才还真跑去按了按发现结果是50我安心地笑了23333
    BGLL
        12
    BGLL  
       2014-11-30 21:27:06 +08:00
    里程碑的时代就发现了……
    mfaner
        13
    mfaner  
       2014-11-30 21:36:53 +08:00
    简直了。Java里一个BigDecimal就能解决的事情,有这么懒吗?
    kawaiiushio
        14
    kawaiiushio  
       2014-11-30 21:43:03 +08:00   ❤️ 1




    这只是一个精度未定义的问题、、、不算bug
    当然 安卓这个计算器app的制作人员也是坑爹
    0x1e240
        15
    0x1e240  
       2014-11-30 21:59:41 +08:00 via Android
    MIUI 没有的说
    jdqingm
        16
    jdqingm  
       2014-11-30 22:03:56 +08:00
    这是如何发现的bug……
    kawaiiushio
        17
    kawaiiushio  
       2014-11-30 22:17:47 +08:00
    @0x1e240 万物基于miui 不科学啊23333
    lincanbin
        18
    lincanbin  
       2014-11-30 22:19:11 +08:00
    旧版本安卓的计算器的确没这个问题。
    计算器一般应该用大整数模拟小数进行运算的。
    kmvan
        19
    kmvan  
       2014-11-30 22:59:51 +08:00

    2.3.5版也有问题
    xz
        20
    xz  
       2014-11-30 23:31:54 +08:00 via Android
    @ETiV 2的23次方?
    ryd994
        21
    ryd994  
       2014-12-01 09:16:36 +08:00
    @imgalaxy
    @Automan
    @kawaiiushio
    It's not a bug: it's a feature...
    min
        22
    min  
       2014-12-01 13:19:42 +08:00
    windows phone表示没有这个题算出来是0.6
    razrlele
        23
    razrlele  
    OP
       2014-12-01 13:57:54 +08:00 via Android
    @min 哈哈哈,突然觉得巨硬可以拿着出个广告的感觉。

    广告词我都想好了:Look, we are more accurate!
    min
        24
    min  
       2014-12-01 14:21:05 +08:00
    @razrlele 赞助开发商多移植几个nb的app是正道
    kx5d62Jn1J9MjoXP
        25
    kx5d62Jn1J9MjoXP  
       2014-12-05 16:16:40 +08:00
    4.4 没有这个bug...
    LittleMK
        26
    LittleMK  
       2014-12-12 00:03:46 +08:00 via Android
    flyme 3.+木有
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5685 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 01:37 · PVG 09:37 · LAX 17:37 · JFK 20:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.