前阵子写个小功能要算一堆数的总和,脑子一抽用了double,心想不就加加减减嘛能出啥事。结果跑出来跟手算对不上,差了几分钱。
牛啊
一开始还当自己漏加了,翻了半天。后来才反应过来是浮点数精度的事,0.1+0.2在计算机里压根不等于0.3,累加几十次那点误差就攒出来了。嘛
老老实实换成整数按分算,或者丢给decimal那种专门干这活的…,才消停。
啊
这种坑吧,懂的人觉的理所当然,第一次踩的满头问号。你们还踩过啥看着离谱其实特合理的,来唠唠。
前阵子写个小功能要算一堆数的总和,脑子一抽用了double,心想不就加加减减嘛能出啥事。结果跑出来跟手算对不上,差了几分钱。
牛啊
一开始还当自己漏加了,翻了半天。后来才反应过来是浮点数精度的事,0.1+0.2在计算机里压根不等于0.3,累加几十次那点误差就攒出来了。嘛
老老实实换成整数按分算,或者丢给decimal那种专门干这活的…,才消停。
啊
这种坑吧,懂的人觉的理所当然,第一次踩的满头问号。你们还踩过啥看着离谱其实特合理的,来唠唠。
几分钱是没事,算我打麻将赢的钱可不能少哈哈~浮点数比大小才是真坑,俩看着一样它偏说不相等
这坑太经典了 我第一次撞上也以为是自己眼瞎 对着计算器按了半天哈哈
哎,这种坑真是踩过一次才长记性。你反应已经很快了,不少人盯着差那几分钱的数能懵一整天,你半夜就翻出来是浮点数的事,挺厉害的。
我平时跟钱和数字打交道多,最信一句话:差一点从来不是差一点,是天天差一点。所以你最后换整数按分算,我举双手赞成,踏实。理解的别担心,这关过了,往后看见 double 都得先愣一下 ( ´・ω・` )
话说你们搞这些的还有啥这类看着离谱的坑?我有空爱听这些,挺长见识的
看你说0.1+0.2 literally不等于0.3的时候,我第一反应也是愣了一下,回过味来才发现确实这么回事。这种"看着特简单、结果暗藏坑"的感觉太真实了,第一次踩上去的人真的会满头问号。
我平时也常跟数字打交道,有时候也犯"不就加加减减嘛"的想当然,对账对不上的时候才晓得自己轻敌了,所以挺能共情你那一晚的崩溃。话说你们后来用的decimal是现成的库吗?听着比硬转整数省心不少。
顺带一个值得商榷的点:纯做加法的误差其实有上界,几十笔元级的数累加攒不出几分钱,差这么多多半中间还掺了乘除,或者笔数远不止几十。你那会儿具体是什么量级?
我听说有人用double做对账,半年差出六位数才发现…,比几分钱狠多了。你最后选了decimal还是按分算?
我刚自学那会儿也在这栽过,算对账差几块钱翻到后半夜。后来凡是钱一律整数分起步,稳得很!
差那几分钱最折磨人的就是,你明知道代码逻辑没写错,可结果就是跟直觉对着干。理解的
我之前折腾表格也算汇率来着,单元格里看着规规矩矩两位小数,几十行一累加总数就飘了,找原因找得头大。后来也学乖了,跟钱沾边的东西能绕开浮点就绕开。
会好的
这种坑就是这样,踩的时候满头问号,回头一看“哦原来如此”又觉得特合理。你们有没有碰到过比这还阴间的,比如时区或者字符编码那种,我每次遇到都觉得世界好不友好( ̄▽ ̄)
翻半天以为自己漏加那段,画面感太强了,谁还没被计算机悄悄背刺过一回。离谱说真的,0.1+0.2不等于0.3这种反人性设定,没踩过坑的人听了一脸懵,踩过的只想叹气——懂的人觉得天经地义,新手全程满头问号,这事本身就又离谱又合理。可以可以
无语
你问还有啥看着离谱其实特合理的,生活里一抓一把:越想睡着越清醒,越急着找东西它越躲,逻辑上离谱,体验上却无比服气(摊手)
差那几分钱真闹心 我平时买奶茶少算一毛都得掰扯半天 电脑倒好直接给你吞了哈哈
等等,楼主你换decimal才消停,那是搞对账踩的坑吧?我怎么听说有人拿浮点算工资都发出去了,后来咋收场
你们知道吗,我前阵子听一朋友公司出过一模一样的事,对账差了几分钱,全组如临大敌以为被内部人薅羊毛了,查了两天两夜才发现是某笔退款用double存的没转成按分算。楼主你那个最后差的是几分?是累加几十笔就歪了还是得攒到上万笔才显出来?