网易首页 > 网易号 > 正文 申请入驻

日本1100日元含税价算出999,这个税计算器差点让我丢工作

0
分享至


1100除以1.1等于多少?小学数学告诉你1000。但你的JavaScript计算器会吐出999.9999999999999,再向下取整变成999——一张税单差1日元,在日本这叫"无法上线"。

作者Sen在为日本消费税写计算器时踩进这个坑。10%标准税率,8%优惠税率(食品、报纸),双向换算,三种取整模式——80行代码,12个测试用例,却藏着浮点运算的经典陷阱。

浮点数的"1/3困境"

问题不在除法,在0.1。十进制的0.1转成二进制是无限循环小数,就像1/3在十进制里写不完一样。IEEE 754标准下,1 + 0.1实际是1.1000000000000001,1100除以这个数,结果比1000少了头发丝那么一点。

作者的原版代码长这样:

const exclTax = Math.floor(priceInclTax / (1 + rate)) // 1100 / 1.1 → 999.9999... → 999 ❌

Math.floor一巴掌拍下去,999.9999变成999。对便利店小票来说,这是灾难。

修复方案出人意料地轻量:加一个极小的epsilon(ε)。1e-9,也就是十亿分之一日元,在任何真实消费场景(0到1亿日元)里都是噪声。但它能把999.9999999999999顶到1000.0000000009,floor之后正确落地1000。

作者把这叫做"逆向epsilon"——通常我们用epsilon判断"两个浮点数是否足够接近",这里用它把浮点数推进正确的整数区间。

日本国税厅的"两种合法答案"

单商品计税只是热身。购物车里有多个商品时,日本国税厅允许两种算法并存,商家任选:

方法一:逐商品计税,再求和

每个商品先算税、四舍五入,最后加起来。适合小票需要展示每件商品税额的情况。

方法二:按税率分组,先求和再计税

10%税率的商品先加总,8%的另算一组,分别计税后合并。总金额可能和方法一差几日元。

作者的computeCart函数把两种都实现了。测试用例覆盖边界:混合税率购物车、双向换算、三种取整模式(floor/round/ceil)。

演示地址:https://sen.ltd/portfolio/shohizei-calc/ GitHub:https://github.com/sen-ltd/shohizei-calc

零依赖,原生JS,压缩后比一张表情包还小。

"正确"方案 vs 能跑的方案

浮点问题的"教科书答案"是任意精度算术,BigDecimal那一路。但这意味着为80行代码拖进一个依赖库。作者算过账:对于日本消费税的实际数值范围,epsilon修复足够安全,且省下的bundle size和认知负担是真实收益。

这不是妥协,是工程判断。就像你不会为家里换个灯泡调用起重机——IEEE 754的缺陷在特定区间是可预测的,而1e-9这个魔法数字恰好落在安全区。

代码里还埋了个细节:用户可以在10%和8%税率间切换,输入框实时响应。作者提到这个交互时用了个类比——"像老式收银机切换税率档位,但不用油"。

最后留个测试给你:你的计算器能正确处理1100÷1.1吗?如果答案是999,它可能正在某个日本便利店的POS机里等着被投诉。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
央视披露浏阳爆炸烟花厂内部画面:几乎所有火药生产线工房门口贴符,希望保佑平安;火药混堆安全隐患突出,电线杆断裂、车辆仅剩骨架

央视披露浏阳爆炸烟花厂内部画面:几乎所有火药生产线工房门口贴符,希望保佑平安;火药混堆安全隐患突出,电线杆断裂、车辆仅剩骨架

山西晚报
2026-05-09 14:45:41
1亿美元种子轮!SGLang团队RadixArk,打造下一代开放AI基础设施

1亿美元种子轮!SGLang团队RadixArk,打造下一代开放AI基础设施

机器之心Pro
2026-05-08 17:13:20
原广州军区副司令员兼南海舰队司令员王永国逝世,享年87岁

原广州军区副司令员兼南海舰队司令员王永国逝世,享年87岁

澎湃新闻
2026-05-09 12:08:29
华为Pura 90系列:橘色海面下,深邃的影像底蕴

华为Pura 90系列:橘色海面下,深邃的影像底蕴

爱范儿
2026-04-20 18:42:35
恒大原总裁夏海钧广州豪宅被拍卖,428平方米顶层复式评估价7062万元,其曾因年薪超2亿被誉为地产界“打工皇帝”

恒大原总裁夏海钧广州豪宅被拍卖,428平方米顶层复式评估价7062万元,其曾因年薪超2亿被誉为地产界“打工皇帝”

极目新闻
2026-05-09 12:31:29
日本富豪办派对让年轻女孩全裸叠成“人体金字塔”!全网立已婚好爸形象一夜翻车!

日本富豪办派对让年轻女孩全裸叠成“人体金字塔”!全网立已婚好爸形象一夜翻车!

东京新青年
2026-05-08 18:31:53
不愧是马司令!文章饭店正式开业,她带女儿来支持

不愧是马司令!文章饭店正式开业,她带女儿来支持

白面书誏
2026-05-08 20:45:46
女子190元买榴莲“仅退款”被拘,往返1600公里讨公道的河南商家最新发声:买家才20多岁,她父母想协商和解,我要求依法处理,并公开道歉

女子190元买榴莲“仅退款”被拘,往返1600公里讨公道的河南商家最新发声:买家才20多岁,她父母想协商和解,我要求依法处理,并公开道歉

大风新闻
2026-05-09 10:00:07
美军刚射战斧,不到24小时,解放军直接回击,亮出南海最硬底牌

美军刚射战斧,不到24小时,解放军直接回击,亮出南海最硬底牌

云上乌托邦
2026-05-09 14:53:05
上市三年,造假三年,“小巨人”清越科技被立案调查

上市三年,造假三年,“小巨人”清越科技被立案调查

未名财经
2026-05-09 15:39:24
员工人均奖金达610万人民币?SK海力士回应

员工人均奖金达610万人民币?SK海力士回应

第一财经资讯
2026-05-09 16:50:23
人民日报发声:机关事业单位的隐性收入,正在消失

人民日报发声:机关事业单位的隐性收入,正在消失

细说职场
2026-05-09 12:16:27
泽连斯基真的失控了,这或许是俄乌战争即将结束的标志

泽连斯基真的失控了,这或许是俄乌战争即将结束的标志

罗富强说
2026-05-09 14:02:37
朝鲜宪法迎来大改,平壤坚持了78年的道路,被金将军亲手放弃

朝鲜宪法迎来大改,平壤坚持了78年的道路,被金将军亲手放弃

安珈使者啊
2026-05-09 14:24:39
39岁何洁官宣即将二婚,对象是仨孩子生父刁磊,日子定在5月20日

39岁何洁官宣即将二婚,对象是仨孩子生父刁磊,日子定在5月20日

白面书誏
2026-05-08 16:13:29
4只皮皮虾1035元,官方回应是否“带客吃回扣”

4只皮皮虾1035元,官方回应是否“带客吃回扣”

中国新闻周刊
2026-05-09 19:38:06
尴尬!王石公开脱衣秀身材“翻车”,网友:像是一副被榨干的躯体

尴尬!王石公开脱衣秀身材“翻车”,网友:像是一副被榨干的躯体

火山詩话
2026-05-08 21:39:02
捷途汽车:把「方盒子」做成冠军,把「旅行」做成生态

捷途汽车:把「方盒子」做成冠军,把「旅行」做成生态

汽车预言家
2026-05-09 11:32:23
4月吉利逆市扛旗,高质量增长跑出行业韧性

4月吉利逆市扛旗,高质量增长跑出行业韧性

汽车公社
2026-05-06 20:16:34
国际油价本周大跌7%

国际油价本周大跌7%

每日经济新闻
2026-05-09 09:16:42
2026-05-09 20:04:49
碳基打工人
碳基打工人
坐标北京,靠咖啡续命,靠小红书下饭的普通人类。
2394文章数 33关注度
往期回顾 全部

财经要闻

存储芯片上演造富潮

头条要闻

王菲出新歌首用陕西话唱戏腔 时隔24年与张艺谋再合作

头条要闻

王菲出新歌首用陕西话唱戏腔 时隔24年与张艺谋再合作

体育要闻

成立128年后,这支升班马首夺顶级联赛冠军

娱乐要闻

50岁赵薇脸颊凹陷沧桑得认不出!

科技要闻

美国政府强力下场 苹果英特尔达成代工协议

汽车要闻

轴距加长/智驾拉满 阿维塔07L定位大五座SUV

态度原创

健康
教育
旅游
游戏
房产

干细胞能让人“返老还童”吗

教育要闻

可怕的14岁,恐怖的17岁!心理专家提醒:父母最大的卑微,就是孩子到了青春期

旅游要闻

告别“打卡式”旅游 境外游客来杭15分钟即可换证自驾

LCK第二赛段:又是爆冷?BFX找回状态,专门搞KT?

房产要闻

低价甩卖!海口这个地标商业,无人接盘!

无障碍浏览 进入关怀版