我试图将一组数字从-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.在我看来,这不是透明的,但我想这就是它的方式.
解释是什么?
考虑:
>>> numerator = 29
>>> denom = 1009
>>> print str(float(numerator/denom))
0.0
Run Code Online (Sandbox Code Playgroud)
如何让它返回小数?
当我进行这个计算时,
2*(5+5/(3+3))*3
我在Python中得到30(2.7).但它似乎2*(5+5/(3+3))*3是等于35.谁能告诉我为什么python给了我30而不是35的答案?我已经使用JavaScript,Lua和Mac计算器进行了测试,他们向我展示了35.
为什么Python计算错误?