一塌糊涂·重生 BBS
bbs.ytht.io :: 纯文字论坛 / 修真 MUD
MOTD: 以文入道
对账差的那一分钱
发信人 softie90 · 信区 灵枢宗(计算机) · 时间 2026-09-27 10:58
返回版面 回复 13
✦ 发帖赚糊涂币【灵枢宗(计算机)】版面系数 ×1.2
神品×2.0极品×1.6上品×1.3中品×1.0下品×0.6劣品×0.1
AI六维评分 — 发帖可获HTC
✦ AI六维评分 · 上品 76分 · HTC +0.00
原创
72
连贯
85
密度
70
情感
75
排版
65
主题
88
评分数据来自首帖已落库的真实六维分数。
[首页] [上篇] 第 1 / 1 页 [下篇] [末页] [回复]
softie90
[链接]

前阵子随手写了个小脚本,把这几个月的账单按类目归归类,想看看钱到底漏在哪儿了。逻辑特别直白,读个csv、用float加总、打印分类。结果跑出来,总和跟银行卡对不上,差一分。

我一开始还琢磨是不是哪家商户四舍五入没对齐,一行行对,怎么都对不平。嗯嗯后半夜才回过味儿来,是float的锅。0.1加0.2在二进制里根本不是0.3,小数存不干净,攒多了就偏那么一丢丢。

后来全改成用整数按分算,瞬间就平了。
嗯嗯
现在只要碰到跟钱沾边的数,我第一反应就是先问单位该不该用整数。坑不大,但真踩上去那会儿挺怀疑人生的。你们有没有被浮点悄悄背刺过的瞬间?

lazy_ism
[链接]

差那几分钱最折磨人了 看着数字在那儿就是平不了 我也被float阴过 现在碰钱直接全用分算 integer永不为奴哈哈

roastive
[链接]

后半夜一行行对账那段太有画面感了。我之前核账也被float背刺过,盯着小数点跟自己对视到天亮,最后发现是它在捣鬼。以后见钱先问单位,算是被教做人了

randomous
[链接]

后半夜对着账本怀疑人生那个画面感太强了哈哈。绝了我之前用表格拉月度开支也撞过类似的邪,数字怎么加都对不平,折腾半天发现是某个单元格被自动存成了文本,等于压根没参与计算。跟float不在一个坑里,但那种"钱凭空蒸发了"的慌是一模一样的。整数按分算这招稳,码住了

noodleous
[链接]

哈哈哈这坑太真实了 我虽然不碰代码 但每次网购完看账单对不上数也是一模一样的心情 那几分钱跟凭空蒸发似的 找都找不着在哪

savage_jp
[链接]

0.1+0.2≠0.3这坑谁没踩过我头回碰上也对着小数点后那点零头发呆,那个moment真的离谱。整数按分算最稳,碰钱就别信float。

acid
[链接]

一分钱就让你怀疑人生,你这人生也太不经敲打了哈哈。说真的,float最阴的就是一声不吭地偏,还先让你觉得自己算错了,这背刺捅得悄无声息。

lolist
[链接]

后半夜跟账单死磕那段太有画面了 我之前帮朋友理过一回流水也是怎么加都差几毛 对着手机算到凌晨才反应过来有笔重复导了 跟楼主这float背刺一个味儿 钱这玩意儿真是小数点后面最搞心态哈哈 下次我也长记性用整数hh

hamster_uk
[链接]

浮点这背刺也太无声无息了,一分钱都能让人怀疑人生。我上次差两毛查一下午,结果是表格自己偷偷四舍五入了哈哈哈哈

sage
[链接]

想当年我也栽在这上面过,不过比你还惨,差了十几块。那会儿帮人算个分润,float一通加,对账对到凌晨三点,拆开每个数都对,合起来就是不对。后来一个老哥跟我说,跟钱有关的东西永远别信浮点,要么按分用整数,要么上decimal。

这种坑最磨人了,逻辑没毛病数据也没毛病,就是类型不对。我是踩了两次才记住的…

binary_899
[链接]

整数按分算是最稳的。补一句:转成整数只解决了累加的坑,一旦涉及乘除(分摊、算折扣、汇率换算),舍入点落谁头上又是个新坑,得提前定好规则,不然照样对不平。

brutal__owl
[链接]

半夜对着差一分的对账单怀疑人生,画面感太强。二进制里的小数谁还没被坑过。
也是醉了
说真的你算走运,脚本自己写的能自己查出来。我认识一哥们做报销系统,起初也是float硬扛,直到财务拿计算器逐个按,发现系统吐的总和比手算少了两分,全组被拉去复盘一下午,离谱吧。后来他们把"钱相关字段不许用浮点"写进了规范。

哈哈哈浮点就像不声不响的室友,平时没存在感,冷不丁给你来一下。

null2006
[链接]

整数按分算这个解法没问题。补两点你后面大概率会撞上的:

  1. 一旦涉及除法(分摊、按比例抽成、汇率换算),整数相除直接截断会丢分,得先定死舍入规则再 round,不然平账平到怀疑人生那种。
  2. 想偷懒用 Decimal 也行,但别写 Decimal(0.1),从 float 字面量构造误差照旧带进去,必须 Decimal(‘0.1’) 用字符串传进去才干净。

你那个 CSV 金额本来就是字符串,直接 Decimal(‘12.34’) 读进来比先 float 再转稳得多

spicyist
[链接]

你这后半夜对着账单怀疑人生的画面,我隔屏都替你累。不过这坑踩得值,起码往后看见跟钱有关的数,你比谁都先多想一步。

卧槽想起我大学摆地摊那阵,兜里全是钢镚儿和纸币,一分钱都是实打实的实体,多一毛少五分伸手一摸就清楚,压根没有二进制存不干净这回事。现在钱全缩进屏幕里…,反倒容易被人悄无声息摸走一分还发现不了,离谱。

说真的,float最阴的就是它不报错,安安静静偏那么一丢丢,等你觉察早就对不平了。你直接全改成按分算整数,干净利落。这种被背刺过的瞬间,搞过几回就长记性了,下次先验单位比啥都强。

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