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

为什么 python3 出现这样的加法结果 0.4 +0.8 =1.2000000000000002

  •  1
     
  •   wzw · 2018-09-15 16:59:09 +08:00 · 3552 次点击
    这是一个创建于 2262 天前的主题,其中的信息可能已经有所发展或是发生改变。
    大家在 python 3.6 中试试 print(0.4 + 0.8)

    为什么会这样?
    9 条回复    2018-09-16 12:36:17 +08:00
    windfarer
        1
    windfarer  
       2018-09-15 17:01:27 +08:00
    cabbage
        3
    cabbage  
       2018-09-15 17:03:39 +08:00 via Android
    你可以试试,所有编程语言包括 js 都是这样的(浮点类)
    n2ex2
        4
    n2ex2  
       2018-09-15 17:04:49 +08:00 via Android
    周经了
    MonoLogueChi
        5
    MonoLogueChi  
       2018-09-15 17:11:35 +08:00 via Android
    应该是因为浮点运算的原因,二进制无法准确表示十进制小数。十进制小数转换成二进制,然后再转换成十进制,就会有一定的误差,这个误差大小是根据你的精度确定的,比如你用双精度,转换之后中间的 0 要比用单精度多。
    结果是 1.2000000000000000002 还是 1.199999999999999998,要看你对于进制转换是怎么取舍的。
    jingniao
        6
    jingniao  
       2018-09-15 19:46:18 +08:00 via Android
    从我注册这站,这第几次了?
    感觉可以出个集合贴了(≧▽≦)
    zn
        7
    zn  
       2018-09-15 20:12:46 +08:00
    这位同学还是得多学习点姿势才行。
    fayloue
        8
    fayloue  
       2018-09-15 20:18:25 +08:00
    浮点误差,excel 也经常这样
    Tompes
        9
    Tompes  
       2018-09-16 12:36:17 +08:00
    浮点运算都是不准确的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5943 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 03:26 · PVG 11:26 · LAX 19:26 · JFK 22:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.