Python 保留小数的问题

2018-10-18 13:56:38 +08:00
 liuxingpu

最近在对支付宝的接口,支付宝收的手续费竟然没有给你,要自己算!(吐槽一下) 问客服说是手续费计算保留到分四舍五入 然后就碰到了如下问题 其中有一笔计算结果是 0.00494 元手续费,我按四舍五入得到的结果是 0,然而支付宝那边计算结果是 0.01,我就好奇这是怎么四舍五入的啊.....

from decimal import Decimal, ROUND_HALF_UP
Decimal('0.00494').quantize(Decimal('0.00'))  # 结果是 0.00
Decimal('0.00494').quantize(Decimal('0.00'), ROUND_HALF_UP) # 结果是 0.00

是不是我哪里弄错了? 谁能给我解释一下呀,不胜感激

2623 次点击
所在节点    Python
22 条回复
ranleng
2018-10-18 13:59:17 +08:00
因为至少要有 1 分的手续费这样吧
liuxingpu
2018-10-18 14:00:04 +08:00
@ranleng 不呀,我支付 1 元时候就是 0 手续费
Zzdex
2018-10-18 14:01:45 +08:00
0.0049
0.005
0.01

2333
liuxingpu
2018-10-18 14:02:48 +08:00
@Zzdex 那这还是保留到分嘛...
liuxingpu
2018-10-18 14:14:16 +08:00
有没有支付宝的大佬来解释一下?
sjw199166
2018-10-18 14:58:06 +08:00
根据小数点后面的所有的位数 每一位往前四舍五入呗 到 2 位的时候 break 掉 2 楼解释的多明白。。
kkhaike
2018-10-18 15:03:17 +08:00
我觉得 ranleng 说的合理,大于 0,小于 0.01 ,按 0.01
sutra
2018-10-18 15:12:28 +08:00
@liuxingpu 1 元的手续费计算出来是多少?是不是用 double 表示出来都是 0 ?
liuxingpu
2018-10-18 15:23:00 +08:00
@sjw199166

@sutra
我试了一笔手续费为 0.004712 的交易,支付宝那边的结果是 0 手续费,如果按每一位四舍五入这个应该也是 0.01 吧,我觉得问题出在 9 上? 但是感觉不合理啊
liuxingpu
2018-10-18 15:23:39 +08:00
@kkhaike 确实有 0 手续费的
kkhaike
2018-10-18 15:40:17 +08:00
@liuxingpu 我说大于 0
kkhaike
2018-10-18 15:41:04 +08:00
@liuxingpu 刚刚没看回复,不好意思
GoLand
2018-10-18 15:55:46 +08:00
你这个直接( 0,0.01 ]的就算 0.01 ,其他的照常四舍五入不行么。
liuxingpu
2018-10-18 16:17:51 +08:00
@kkhaike ..上面提到的手续费都是大于 0 的呀
liuxingpu
2018-10-18 16:19:10 +08:00
@GoLand 上面有四舍五入后是 0 的例子,不能都按 0.01,虽然就 1 分钱的事,但是帐会对不上啊
wlsnx
2018-10-18 18:35:29 +08:00
不会是你算出的手续费本来就有误差吧
dairoot
2018-10-18 19:01:46 +08:00
round(Decimal('0.00494').quantize(Decimal('0.000')), 2)
inoki
2018-10-18 23:59:30 +08:00
一般涉及到钱的不都是以分为单位的整数嘛😂拙见
l4ever
2018-10-19 07:27:50 +08:00
手续费小于 0.01 就设置成等于 0.01 大于 0.01 再四舍五入取值。
PulpFunction
2018-10-19 08:59:38 +08:00
‘我一再强调,只能多收,不能少收。说吧,多收了多收’

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/498770

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX