我试图将一组数字从-100标准化为0到10-100的范围,并且只是注意到即使没有变量,也没有评估我期望它的方式:
>>> (20-10) / (100-10)
0
Run Code Online (Sandbox Code Playgroud)
浮动部门也不起作用:
>>> float((20-10) / (100-10))
0.0
Run Code Online (Sandbox Code Playgroud)
如果除法的任何一方被强制转换为浮点数,它将起作用:
>>> (20-10) / float((100-10))
0.1111111111111111
Run Code Online (Sandbox Code Playgroud)
第一个示例中的每一侧都评估为int,这意味着最终答案将被转换为int.因为0.111小于.5,所以它会变为0.在我看来,这不是透明的,但我想这就是它的方式.
解释是什么?
我在Python中有一个奇怪的问题:除法没有正确执行:
print pointB[1]
print pointA[1]
print pointB[0]
print pointA[0]
print (pointB[1]-pointA[1]) / (pointB[0]-pointA[0])
Run Code Online (Sandbox Code Playgroud)
这些是结果:
100
50
100
40
0
Run Code Online (Sandbox Code Playgroud)
谢谢
我有两个变量:count,我的过滤对象的数量,以及per_page的常量值.我想通过per_page除以计数并得到整数值,但无论我尝试什么 - 我得到0或0.0:
>>> count = friends.count()
>>> print count
1
>>> per_page = 2
>>> print per_page
2
>>> pages = math.ceil(count/per_pages)
>>> print pages
0.0
>>> pages = float(count/per_pages)
>>> print pages
0.0
Run Code Online (Sandbox Code Playgroud)
我做错了什么,为什么math.ceil给出浮点数而不是int?
我正在尝试使用递归来计算e ^ x,e ^ x = e ^(x/2)*e ^(x/2),并且e ^ x的三阶Maclaurin扩展和脚本保持返回1. I我不是在寻找更高精度的解决方案,只是想了解脚本出错的地方:)
我的想法是,当函数值低于限制时,如果有足够的迭代,它应该以(1 + x/N +(x/N)^ 2/2)^ N结束.
def exp(x):
if abs(x)<0.0001:
return 1+x+x**2/2
else:
y=exp(x/2)
return y*y
Run Code Online (Sandbox Code Playgroud) 我刚开始学习python,我写了这三行代码:
points = 49
total = points / 50 * 500 + 40
print "omg wtf ", total
Run Code Online (Sandbox Code Playgroud)
而且我预计输出会像530一样,但相反,无论我做什么,我都会得到40.我尝试将total初始化为0,将赋值转换为int,我抛出一个括号括号,但没有任何效果.我很困惑......有人可以帮我/告诉我到底发生了什么事吗?
可能重复:
为什么这个分区在python中不起作用?
我遇到的一个简单问题(我想)以下声明:
print (4950*8)/(((4950*8)/10000000*(1538/1460))+0.1/1000)/1000
Run Code Online (Sandbox Code Playgroud)
给我396000.0.
但在计算器上我得到9270.614192621.
如果有人可以在代码中指出我做错了什么.
谢谢.
我想在Python中打印一个double.但它不起作用,我不知道为什么.
我的代码:
test = 3000 / (1500 * 2000)
print str(test)
Run Code Online (Sandbox Code Playgroud)
如果我做以下事情,我总是得到一个0而不是一个0.001:
test = 3000 / (1500 * 2000)
print '%.10f' % test
Run Code Online (Sandbox Code Playgroud)
我得到了一个0.000000000而不是0.001.
我怎么告诉Python这应该是双倍的?