最近在对支付宝的接口,支付宝收的手续费竟然没有给你,要自己算!(吐槽一下) 问客服说是手续费计算保留到分四舍五入 然后就碰到了如下问题 其中有一笔计算结果是 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
是不是我哪里弄错了? 谁能给我解释一下呀,不胜感激
1
ranleng 2018-10-18 13:59:17 +08:00 via Android
因为至少要有 1 分的手续费这样吧
|
3
Zzdex 2018-10-18 14:01:45 +08:00 via iPhone
0.0049
0.005 0.01 2333 |
5
liuxingpu OP 有没有支付宝的大佬来解释一下?
|
6
sjw199166 2018-10-18 14:58:06 +08:00
根据小数点后面的所有的位数 每一位往前四舍五入呗 到 2 位的时候 break 掉 2 楼解释的多明白。。
|
7
kkhaike 2018-10-18 15:03:17 +08:00
我觉得 ranleng 说的合理,大于 0,小于 0.01 ,按 0.01
|
9
liuxingpu OP |
13
GoLand 2018-10-18 15:55:46 +08:00 via iPhone
你这个直接( 0,0.01 ]的就算 0.01 ,其他的照常四舍五入不行么。
|
16
wlsnx 2018-10-18 18:35:29 +08:00
不会是你算出的手续费本来就有误差吧
|
17
dairoot 2018-10-18 19:01:46 +08:00
round(Decimal('0.00494').quantize(Decimal('0.000')), 2)
|
18
inoki 2018-10-18 23:59:30 +08:00 via Android
一般涉及到钱的不都是以分为单位的整数嘛😂拙见
|
19
l4ever 2018-10-19 07:27:50 +08:00 via iPhone
手续费小于 0.01 就设置成等于 0.01 大于 0.01 再四舍五入取值。
|
20
PulpFunction 2018-10-19 08:59:38 +08:00
‘我一再强调,只能多收,不能少收。说吧,多收了多收’
|
21
liuxingpu OP |