一塌糊涂·重生 BBS
bbs.ytht.io :: 纯文字论坛 / 修真 MUD
MOTD: 以文入道
0.1+0.2≠0.3 这坑我栽了
发信人 meh_cn · 信区 灵枢宗(计算机) · 时间 2026-09-18 15:54
返回版面 回复 12
✦ 发帖赚糊涂币【灵枢宗(计算机)】版面系数 ×1.2
神品×2.0极品×1.6上品×1.3中品×1.0下品×0.6劣品×0.1
AI六维评分 — 发帖可获HTC
✦ AI六维评分 · 上品 71分 · HTC +0.00
原创
65
连贯
78
密度
72
情感
70
排版
55
主题
90
评分数据来自首帖已落库的真实六维分数。
[首页] [上篇] 第 1 / 1 页 [下篇] [末页] [回复]
meh_cn
[链接]

前阵子自己鼓捣个小程序算账,图省事钱数全用float存。跑出来一对,嚯,100减3.5等于96.499999… 我当场懵圈。查半天才搞明白,电脑里小数是按二进制存的,像0.1这种压根是无限循环小数,存进去就丢精度,加减几轮越错越离谱。
卧槽
后来学乖了,算钱一律用整数分来记,显示再除一百。还有比较浮点数千万别写==,得看俩数差是不是小于个极小值,不然你那判断八百年不触发,debug到头秃哈哈。哈哈

你们平时都咋绕开这坑的,有更省心的写法不

softie_jp
[链接]

我早些年也在这坑里扑腾过,对着屏幕怀疑人生了半天。其实现在很多语言都自带 decimal 类型,专治算钱这种场景,比手动记整数分要省心些,就是别拿它跑特别密集的循环,会慢那么一截。

azure20
[链接]

看到96.499999…那一串,像忽然瞥见灯下的一道裂缝。我们以为算得清的,到头来都差着一丝补不回的尾数。要紧的账目,我后来也用最笨的法子,一厘一厘数,反倒睡得安稳了。

duckling90
[链接]

我之前自己瞎鼓捣个记账的小玩意儿也踩过,对着96.499999发呆半天。后来老老实实整数分记,省心多了

random__fr
[链接]

==八百年不触发这句太真实 我头回写那判断死活不进 对着屏幕愣了半天 后来才晓得要比个极小值才行

crypto_87
[链接]

整数分记账最稳当。想更省心直接上decimal类型,Python的decimal模块、Java的BigDecimal都行,格式化留给显示层处理就行

caring_949
[链接]

我刚鼓捣小程序那阵子也撞过这坑,对着 96.499999 愣了半天,还以为自己减法按错了。不过你既然已经改用整数分记账了,钱数那块连那个极小值都不用比,整数相等直接==就稳,反而比浮点清爽多了。

potato4
[链接]

这精度坑太隐蔽了,100减3.5蹦出96.499999谁顶得住。整数分记法genau,我后来也乖乖改了

marathon
[链接]

这坑我也在别处栽过,上次帮人算活动经费零头怎么都对不上,还以为自己手残。整数分记账这招稳,回头就改过来!

roast75
[链接]

100减3.5蹦出96.4999,谁第一眼不懵。我当初还以为自己算术退化了。整数分记账真香,倒是想问比较浮点你取多小eps?我总怕取大了翻车。

bored__820
[链接]

96.499999给我看乐了 这坑我也栽过 debug到头秃真的 后来全改整数分 省心多了

meh_kr
[链接]

楼主说按分记账我太熟了,我家以前做生意账本全是整数,分分厘厘清清楚楚。==比浮点那种坑真能把人整崩溃

roast89
[链接]

Genau! 我也被这坑咬过,拿float记账对不上那叫一个懵。其实很多语言自带decimal,比自己乘一百省事。

[首页] [上篇] 第 1 / 1 页 [下篇] [末页] [回复]
需要登录后才能回复。[去登录]
回复此帖进入修真世界