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

1/3+1-1==1/3;

  •  
  •   pinews · 2018-09-07 17:44:57 +08:00 · 3166 次点击
    这是一个创建于 2271 天前的主题,其中的信息可能已经有所发展或是发生改变。
    true?
    false?
    why?
    19 条回复    2018-09-08 10:58:18 +08:00
    neptuno
        1
    neptuno  
       2018-09-07 17:50:15 +08:00 via Android
    false,精度?
    delectate
        2
    delectate  
       2018-09-07 17:51:55 +08:00
    Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> 1/3+1-1==1/3
    False
    >>> 1/3+1-1
    0.33333333333333326
    >>> 1/3
    0.3333333333333333
    maximum2012
        3
    maximum2012  
       2018-09-07 17:53:56 +08:00
    javascript fasle
    1/3+1-1
    0.33333333333333326
    1/3
    0.3333333333333333
    401Li
        4
    401Li  
       2018-09-07 17:58:46 +08:00 via Android
    新手,觉得尽量不要比较浮点数,机器存成定点数时就会有精度的问题吧。
    silencefent
        5
    silencefent  
       2018-09-07 17:59:13 +08:00
    javascript
    console.log(Math.PI+1-1==Math.PI)
    true
    SakuraSa
        6
    SakuraSa  
       2018-09-07 18:00:53 +08:00
    这个主要是看运算符 / 在表达式中是“整除”还是“浮点除”
    我能想到的结果:

    语言 除类型 结果 备注
    java int 之间整除 true
    js 浮点除 false
    c/c++ int 之间整除 true
    python2 int 之间整除 true (运算符 // 表示浮点除)
    python3 浮点除 false (运算符 // 表示整除)
    SakuraSa
        7
    SakuraSa  
       2018-09-07 18:01:48 +08:00
    @SakuraSa 我完全弄错了,忽略上一条
    JeffKing
        8
    JeffKing  
       2018-09-07 18:06:29 +08:00 via iPhone
    大一 c 语言数据类型章节: 浮点型数不要用于比较,除非自定义比较精度。
    jowan
        9
    jowan  
       2018-09-07 18:17:36 +08:00
    http://www.php.net/manual/zh/language.types.float.php
    永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。如果确实需要更高的精度,应该使用任意精度数学函数或者 gmp 函数。
    Mrlgm
        10
    Mrlgm  
       2018-09-07 18:20:49 +08:00
    打开控制台,一输,false,是不是浮点数精度问题
    canxden
        11
    canxden  
       2018-09-07 18:21:04 +08:00
    int / int 向下取整为 0 所以是 ture
    canxden
        12
    canxden  
       2018-09-07 18:26:09 +08:00
    如果会 1/3 能自动转成浮点型, 再进行不同类型数据操作会有误差.
    pinews
        13
    pinews  
    OP
       2018-09-07 18:34:59 +08:00
    @All
    看到有个广告是这个,就来问问,谢谢大家。
    zhuawadao
        14
    zhuawadao  
       2018-09-07 18:45:24 +08:00   ❤️ 3
    这个我问了一下我上小学的妹妹。她说这题她做过,虽然双等号有点超纲,但是这个结果是对的
    frozenthrone
        15
    frozenthrone  
       2018-09-07 19:37:44 +08:00 via iPhone
    得看你什么语言
    kzzhr
        16
    kzzhr  
       2018-09-07 20:07:40 +08:00 via Android
    0.1+0.2-0.3=?
    bombless
        17
    bombless  
       2018-09-07 20:31:43 +08:00 via Android
    我不懂浮点数而且我不想学系列
    ps1aniuge
        18
    ps1aniuge  
       2018-09-08 03:06:46 +08:00
    powershell 代码,基于。net
    PS A:\pscode> [decimal]$(1/3+1-1) -eq [decimal]$(1/3)
    True
    PS A:\pscode> [double]$(1/3+1-1) -eq [double]$(1/3)
    False
    weixiangzhe
        19
    weixiangzhe  
       2018-09-08 10:58:18 +08:00 via iPhone
    两天一个浮点的帖子, 好烦啊😯
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5380 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 07:45 · PVG 15:45 · LAX 23:45 · JFK 02:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.