【问题标题】:Making decimal.Decimal the default numerical type in Python使 decimal.Decimal 成为 Python 中的默认数值类型
【发布时间】:2011-06-11 06:02:29
【问题描述】:

有没有什么方法可以让小数.小数成为 Python 中所有数值的默认类型?我希望能够以类似于 bc 和 dc 程序的方式使用 Python,而不必为每个数字调用 decimal.Decimal(...)。

编辑:对于外行:bc

编辑 2:谢谢tokenize module.

【问题讨论】:

  • 你是在说确保 python 进行浮点运算而不是整数运算?
  • 也许你可以破解解释器来做到这一点,付出很多努力。但为什么?当您编写一个需要在某个地方使用十进制的 Python 程序时,只需在那里使用它——这样会更容易。如果您需要 abritary 精度小数,请使用提供它的东西。 (还有@seggy:浮点数!=十进制!!)
  • 是的,我发帖后才意识到这一点。你是对的,似乎没有一种方法不涉及对 python 内部的严重破坏。 IMO,付出的努力远远超过回报。
  • 我可能最终会使用允许您制作自己的解释器的模块。见code module.
  • 你的程序中的“数字输入”是从哪里来的?在那里强制转换可能比制作自己的解释器更容易......

标签: python decimal interpreter bc dc


【解决方案1】:

如果没有一些严肃的魔法,你就无法真正做到你所要求的,我不会在我的回答中尝试提及,但至少有一个比decimal.Decimal(...)更简单的方法

from decimal import Decimal as D
num = D("1") + D("2.3")

编辑:使用评论中的较短形式。

【讨论】:

  • 嗯,是的,我可以这样做,但我正在寻找不需要对每个数字都进行明确操作的东西。
  • 另外,它更像D("2.3"),所以我不会失去精确度。
  • 问题在于 Python 是一种通用编程语言,并且以不希望发生神奇的事情而著称。正如蟒蛇所说:“显式胜于隐式”。这就是为什么你在这个问题上得到的任何答案都完全符合你的要求。
【解决方案2】:

在 tokenize 模块文档的底部,有一个函数可以满足我的需要:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-19
    • 2012-05-17
    • 2012-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多