Python 保留小数的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
liuxingpu
V2EX    Python

Python 保留小数的问题

  •  
  •   liuxingpu 2018-10-18 13:56:38 +08:00 3201 次点击
    这是一个创建于 2608 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在对支付宝的接口,支付宝收的手续费竟然没有给你,要自己算!(吐槽一下) 问客服说是手续费计算保留到分四舍五入 然后就碰到了如下问题 其中有一笔计算结果是 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 

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

    ranleng
        1
    ranleng  
       2018-10-18 13:59:17 +08:00 via Android
    因为至少要有 1 分的手续费这样吧
    liuxingpu
        2
    liuxingpu  
    OP
       2018-10-18 14:00:04 +08:00
    @ranleng 不呀,我支付 1 元时候就是 0 手续费
    Zzdex
        3
    Zzdex  
       2018-10-18 14:01:45 +08:00 via iPhone
    0.0049
    0.005
    0.01

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

    @sutra
    我试了一笔手续费为 0.004712 的交易,支付宝那边的结果是 0 手续费,如果按每一位四舍五入这个应该也是 0.01 吧,我觉得问题出在 9 上? 但是感觉不合理啊
    liuxingpu
        10
    liuxingpu  
    OP
       2018-10-18 15:23:39 +08:00
    @kkhaike 确实有 0 手续费的
    kkhaike
        11
    kkhaike  
       2018-10-18 15:40:17 +08:00
    @liuxingpu 我说大于 0
    kkhaike
        12
    kkhaike  
       2018-10-18 15:41:04 +08:00
    @liuxingpu 刚刚没看回复,不好意思
    GoLand
        13
    GoLand  
       2018-10-18 15:55:46 +08:00 via iPhone
    你这个直接( 0,0.01 ]的就算 0.01 ,其他的照常四舍五入不行么。
    liuxingpu
        14
    liuxingpu  
    OP
       2018-10-18 16:17:51 +08:00
    @kkhaike ..上面提到的手续费都是大于 0 的呀
    liuxingpu
        15
    liuxingpu  
    OP
       2018-10-18 16:19:10 +08:00
    @GoLand 上面有四舍五入后是 0 的例子,不能都按 0.01,虽然就 1 分钱的事,但是帐会对不上啊
    wlsnx
        16
    wlsnx  
       2018-10-18 18:35:29 +08:00
    不会是你算出的手续费本来就有误差吧
    dairoot
        17
    dairoot  
       2018-10-18 19:01:46 +08:00
    round(Decimal('0.00494').quantize(Decimal('0.000')), 2)
    inoki
        18
    inoki  
       2018-10-18 23:59:30 +08:00 via Android
    一般涉及到钱的不都是以分为单位的整数嘛拙见
    luckyc
        19
    luckyc  
       2018-10-19 07:27:50 +08:00 via iPhne
    手续费小于 0.01 就设置成等于 0.01 大于 0.01 再四舍五入取值。
    PulpFunction
        20
    PulpFunction  
       2018-10-19 08:59:38 +08:00
    ‘我一再强调,只能多收,不能少收。说吧,多收了多收’
    liuxingpu
        21
    liuxingpu  
    OP
       2018-10-19 09:26:10 +08:00
    @wlsnx
    @dairoot
    @inoki
    @l4ever
    @PulpFunction
    感谢各位大佬回复,此帖终结
    原因不是出在计算上,毕竟计算机是不会骗人的
    liuxingpu
        22
    liuxingpu  
    OP
       2018-10-19 09:27:27 +08:00
    @liuxingpu 少打了一句,是支付宝那边客服把我签约的手续费率搞错了,后面辗转了好几个客服,他们才发现是费率错误的原因.....此外再吐槽一句....客服质量真的是参差不齐啊
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3164 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 12:03 PVG 20:03 LAX 04:03 JFK 07:03
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86