python - 如何提取所有以 .000 结尾的值并打印它们?

标签 python

好的,我有一个 for 循环运行一个方程,迭代它 0.005。我需要它打印任何以 .000 结尾的“L”值,仅此而已。我该怎么做?

import numpy as np
import math
for D in np.arange(7, 9, 0.0050):
    N = 28
    n = 11
    A = 7.32
    P = 0.25
    C =  float(D)/float(P) #(P/8)*(2*L-N-n+((2*L-N-n)**(2)-0.810*(N-n)**(2))**(0.5)
    L = 2*C+(N+n)/2+A/C
    print("L = ", "%.3f"% float(L), '\n')

我遇到的问题:

我必须使用 np.arange 因为它不允许循环中出现 float 。如果您能告诉我如何解决这个问题,那就太好了。

使用 np.arange 时,我会得到“D”值,例如

D = 7.0009999999999994
L = 75.76939122982431 

D = 7.001499999999999
L = 75.7733725630222 

D = 7.001999999999999
L = 75.77735389888602 

D = 7.002499999999999
L = 75.78133523741519

当我稍后在代码中使用这些数字时,这会导致错误

这个循环需要永远计算。如果有更好的方法,请告诉我。我必须尽快做到这一点,否则它不会被使用。

最佳答案

这篇文章解释了为什么 float 在 python 中不能很好地工作: numpy arange: how to make "precise" array of floats?

我使用了下面的代码,它为我的计算中的 D 和 L 提供了精确的十进制 3 数字:

for i in range(7000, 9000, 5):
    D = i/1000

    print(D)

    N = 28
    n = 11
    A = 7.32
    P = 0.25
    C =  float(D)/float(P) #(P/8)*(2*L-N-n+((2*L-N-n)**(2)-0.810*(N-n)**(2))**(0.5)
    L = 2*C+(N+n)/2+A/C
    print("L = ", "%.3f"% float(L), '\n')

关于python - 如何提取所有以 .000 结尾的值并打印它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53781220/

相关文章:

python - MySQL 似乎正在更改 Python 提供的信息

python - 在项目列表中,保留第一个项目并删除与模式匹配的其余项目(使用 python)

java - 将图像从 java 客户端发送到 python 服务器

python - Sphinx 不会为标题生成侧边栏目录

python - Deep Dream : CPU works but not GPU, 加载原生TensorFlow运行时失败

python - 正则表达式 - 检索分隔符之间的文本

python - 在 python 中迭代图像的所有像素的最快方法

python - 了解 tensorflow 占位符的形状

python - 如何从命令行探索 python 文件

python - 使用 Lambda 函数 Pandas 设置列值