当前位置:  开发笔记 > 编程语言 > 正文

Python十进制

如何解决《Python十进制》经验,为你挑选了2个好方法。

有没有人知道python中更快的十进制实现.如下例所示,标准python decimal比float慢约100倍.

from  timeit import Timer

def run(val, the_class):
    test = the_class(1)
    for c in xrange(10000):
        d = the_class(val)
        d + test
        d - test
        d * test
        d / test
        d ** test
        str(d)
        abs(d)    

if __name__ == "__main__":
    a = Timer("run(123.345, float)", "from decimal_benchmark import run")
    print "FLOAT", a.timeit(1)
    a = Timer("run('123.345', Decimal)", "from decimal_benchmark import run; from decimal import Decimal")
    print "DECIMAL", a.timeit(1)

FLOAT 0.040635041427
DECIMAL 3.39666790146

谢谢,马克西姆



1> Andrew G..:

你可以试试cdecimal:

from cdecimal import Decimal

从Python 3.3开始,cdecimal实现现在是decimal标准库模块的内置实现,因此您不需要安装任何东西.只是用decimal.

对于Python 2.7,安装cdecimal和使用它decimal应该提供类似于Python 3默认获得的加速.


对于那些使用标准`decimal`模块已经拥有大量代码的人来说,这是一个特别好的选择,因为它是一个替代品.事实上,它包含在Python 3.3(今天发布!)的内置`decimal'中.
`pip install m3-cdecimal`

2> Greg Hewgill..:

在GMP图书馆是各地最好的任意精度数学库之一,并有一个Python的结合提供GMPY.我会尝试那种方法.

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有