【问题标题】:Decimal in for python [duplicate]python的小数点[重复]
【发布时间】:2018-08-10 20:21:52
【问题描述】:

我必须以 1、0.1、0.01、0.001、0.0001 等的精度增量在区间 [-10,10] 内评估函数 (3x-2)。 我试过这个

a=1.0
for x in range(1,40):
    for y in range(-10,10,a):
        c=3(x)-2
        print(c)
    a=a/10

(第一个for是因为我需要得到40位小数) 但是我收到了这个错误

for x in range(-10,10,a):
TypeError: 'float' object cannot be interpreted as an integer

感谢您的帮助。

【问题讨论】:

    标签: python decimal increment


    【解决方案1】:

    看起来你想多了这个问题。这是一个更简单的方法,使用numpymatplotlib 来可视化答案:

    import numpy as np
    import matplotlib.pyplot as plt
    
    desired_increment = 0.1
    upper_bound = 10
    lower_bound = -10
    pts = int((upper_bound - lower_bound)/desired_increment + 1)
    
    x = np.linspace(lower_bound, upper_bound, pts)
    
    y = 3*x-2
    
    plt.figure(1)
    plt.plot(x,y,'*')
    plt.show()
    

    您可以使用np.linspace() 更改您提到的增量大小。

    【讨论】:

    • 成功了,谢谢。但我有一个问题,我无法达到超过 8 或 10 位小数,你知道达到 40 的另一种方法吗?并且间隔是 2 而不是 1
    • 我不知道你说的 40 位小数是什么意思。请参阅我的编辑以实现您想要的增量。
    • 我需要递增 1,然后是 0.1,然后是 0.01,然后是 0.001,依此类推,直到 0.00000000000000000000000000000000000000001 但使用 np.linspace() 我无法达到超过 0.000000001 你知道吗实现这一目标的另一种选择?
    • 为什么你需要小数点后 40 位精度......
    • 我需要计算每个小数精度所花费的时间并绘制它(作业的东西哈哈)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-04
    • 1970-01-01
    • 2011-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多