十进制包装中的问题

我有一个非常奇怪的问题,我无法解决。
我希望我的所有数据都以小数而不是指数的形式打印出来。
所以我用的是十进制模数。
打印"\n正品接受率:\t",GA/Decimal(用户)
现在,我已经将精度设置为9,当我尝试在外壳中运行时,它会给出正确的值,但在执行此程序期间,对于GA=2和USERS=180,000,它仍然会给出经验答案。
这也是它只为我提供这个价值的原因。有没有人能解释为什么会发生这样的事情……
非常感谢..。

# 回答1


2/1.8亿可能有太多的前导零,无法在9精度限制内容纳,或者是大于9精度的无限重复的一系列。试着用2/18万作为实验,看看这是否奏效。然后检查DECIMAL类的.Quantize成员。

选择 | 换行 | 行号
  1. from decimal import *
  2. getcontext()
  3. Context(prec=9, rounding=ROUND_HALF_UP, 
  4.         capitals=1, flags=[], traps=[Overflow, DivisionByZero,
  5.         InvalidOperation])
  6. x = Decimal(2)
  7. y = Decimal(180000)
  8. result1 = x/y
  9. print result1
  10.  
  11. print Decimal(result1).quantize(Decimal('.00000001')) 
# 回答2


嘿,
似乎你现在是对的,因为你给Print 1.11E-8的值都是正确的,即使我把精度设置为28。
我有没有办法让它以十进制的方式工作。
非常感谢..。

标签: python

添加新评论