如何提取所有以.000结尾的值并打印出来?

时间:2018-12-14 14:02:17

标签: 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,因为它不允许循环中的浮点数。如果您可以向我展示如何解决这个问题,那就太好了。

使用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

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

此循环永远需要计算。如果有更好的方法,请告诉我。我必须快速进行操作,否则将无法使用。

2 个答案:

答案 0 :(得分:2)

这篇文章解释了为什么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')

答案 1 :(得分:0)

L3是变量

"%.3f"%是小数点后第三位

% 1 == 0我不确定这是做什么的,但是0是我要查找的数字。

if float("%.3f"% L3) % 1 == 0: #L3 is the variable 
    do_something()