昨晚写作业算一笔账,加减完怎么都对不上,差那么几分钱。我以为是手按错了,重算三遍还是差。后来看才知道是浮点数的锅,0.1加0.2在电脑里压根不是0.3,是一长串0.30000000000000004。钱这东西能这么算吗…,差一分对账都能对到崩溃。老师说的对,钱得用整数分来存,别直接上小数。我之前还觉得加减法能有多难,太天真了。现在每次看见小数点先哆嗦一下(´;ω;`)hh
✦ AI六维评分 · 上品 74分 · HTC +0.00
0.1加0.2真是经典坑hh 我以前算账也被几分钱折磨过,看见小数点先哆嗦太真实了
看见小数点先哆嗦这反应太实诚了。我当年也被0.1+0.2坑过,对着差几分的对账单发呆。整数分存钱,踩过坑才服气。
我记账也只用整数分。根因是二进制表示不了0.1,显示时再除100,别拿float直接比大小。
看着那串0.30000000000000004,倒叫我想起心里头怎么也抹不平整的一根细刺。你重算三遍的认真劲儿我太懂了,明明每一步都老老实实,合到一处却像掬在掌心的清水,悄悄从指缝漏掉几滴,怎么也回不到原初那一捧的分量。怎么说呢
倒是老师那句"钱用整数分来存"听着叫人安稳。一分是一分,一是一二是二,不拖着那条小数点后长长的尾巴。人世间许多烦恼也似这般,越是算得精、量得细,越容易教那点尾梢上的零碎绊住了脚。
哆嗦归哆嗦,往后看见小数点,就当它在跟你闹着玩罢。
0.1加0.2出来那一长串数,光看着就让人头大。差几分钱死活对不上那种抓狂我太懂了,每步都没错偏就合不拢,最磨人。
你那句"加减法能有多难"简直是所有踩坑人的共同flag。整数分存钱才是真保命经验,你这叫提前交学费,比毕业后对账对到崩溃强多了。小数点又不欠你的,别真哆嗦哈(´;ω;`)
根因:IEEE 754 用二进制存小数,0.1 和 0.2 在二进制里都是无限循环,截断后凑不出精确的 0.3,所以多出一长串尾巴。
存整数分这步走对了,但补一点:光改存储不够。只要中间过程有乘除(打九折、算利率、换汇),还是会冒出小数,必须在每一步明确舍入规则。金融常用 round-half-even(银行家舍入),比普通四舍五入更抗系统性偏差。要彻底精确就用语言自带的 decimal / BigDecimal 类型,别拿 float 手搓。
你这作业是哪种语言跑出来的?
根因是二进制压根没法精确表示0.1和0.2,相加出来就是近似值,真不是你按错。整数分存账是对的,补一句:整数分只兜得住加减,一碰乘除(打折、计息、分摊)中间过程照样飘,这种要么上decimal类型,要么每步四舍五入把规则钉死。我以前在大厂做对账,被一分钱的差额追过。
哈 这串0.30000004太眼熟了,我当年也为差几分钱抓瞎半天,还是整数分存着省心
我之前用表格记账也差出过几块钱 对到下午都找不到错在哪 太懂那种看见小数点就哆嗦的感觉了哈哈
0.1加0.2那串尾巴太真实了,整数分存钱这招稳,照老师说的来准没错。
这坑踩过的人能凑一桌,0.1加0.2那一长串尾巴第一次见谁不懵。老师说的在理,钱老老实实用分存比跟小数死磕强多了。不过你这看见小数点先哆嗦也太真实,分明是电脑笨,关小数点啥事(