Python,将浮点数转换为整数

Python,将浮点数转换为整数,python,integer,int,Python,Integer,Int,好吧,我知道这个问题经常被问到,但通常回答都是特例解决办法。我想你可能会说,除了如何让它工作之外,我还试图理解为什么这不起作用 # ---- Find Spring Rate ---- # import math import numpy as np from pylab import plot, show, title, xlabel, ylabel, axis import matplotlib as mpl from matplotlib import pyplot as plt '''

好吧,我知道这个问题经常被问到,但通常回答都是特例解决办法。我想你可能会说,除了如何让它工作之外,我还试图理解为什么这不起作用

# ---- Find Spring Rate ---- #
import math
import numpy as np
from pylab import plot, show, title, xlabel, ylabel, axis
import matplotlib as mpl
from matplotlib import pyplot as plt
'''
F = Load
D = mean dia of Coil
d = wire dia
Na = # of active coils
G = Shear Modulus 
'''
F = 30 #lbf   Assumed load 
D = 0.423 #in Measured 
d = 0.055 #in Measured
#N_a = 2.75 
G = 11.85*10**(6) #psi  # pg 526 Table 10-5 - Machine Theory Book
E = 29.0*10**(6) #psi   # pg 526 Table 10-5 - Machine Theory Book

X1 = []
Y1 = []

for N_a in range(1,6,0.025):
    y = (8*F*D**(3)*N_a)/(d**(4)*G) 
    k = (d**(4)*G)/(8*D**(3)*N_a)   
    K=(F//y)
    # print("N_a =", N_a)
    # print("y=", y)
    # print("k=", k)
    # print("K=", K)
    # print('\n')
    X1.append(N_a)
    Y1.append(k)

print("X1=", X1)
print("Y1=", Y1)
当我运行这段代码时,我得到以下信息

Spring_Rate_Mk1.py", line 25, in <module>
    for N_a in range(1,6,0.025):
TypeError: 'float' object cannot be interpreted as an integer

np.arange
works,您只看到浮点的表示

而且
range
不适用于浮点步长,但在您的情况下,这很容易修复,因为起点和终点实际上是整数

如果没有
arange
,您可以使用整数范围并对值进行除法,因为
1/0.025
40
,只需将边界乘以
40
,然后应用除法(在python 2中使用
40.0

印刷品:

1.0
1.025
1.05
1.075
1.1
1.125
1.15
1.175
1.2
1.225
1.25
1.275
1.3
1.325
1.35

等等。。。。除以10的倍数和2的幂,结果就不会出现表示错误。

math.floor()怎么样?所以你有
np.arange
工作,但你对浮点不精确感到不满意?
for N_a in range(40,240):
    N_a /= 40.0
    print(N_a)
1.0
1.025
1.05
1.075
1.1
1.125
1.15
1.175
1.2
1.225
1.25
1.275
1.3
1.325
1.35