Python分部

2024-03-29 13:02:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将一组从-100到0到10-100的数字标准化,但遇到了一些问题,我发现即使没有任何变量,这也不能以我期望的方式进行评估:

>>> (20-10) / (100-10)
0

浮动分割也不起作用:

>>> float((20-10) / (100-10))
0.0

如果分割的任何一边被抛到一个浮球上,它将起作用:

>>> (20-10) / float((100-10))
0.1111111111111111

第一个例子中的每一边都是一个整数,这意味着最终的答案将被转换成一个整数。因为0.111小于0.5,它将被舍入为0。在我看来这是不透明的,但我想就是这样。

怎么解释?


Tags: 答案方式数字整数float例子浮球
0条回答
网友
1楼 · 发布于 2024-03-29 13:02:36

你是putting Integers in so Python is giving you an integer back

>>> 10 / 90
0

如果在之后将其转换为浮点数,则舍入操作已经完成,换句话说,0整数将始终变为0浮点数。

如果您在分区的任何一边使用float,那么Python将给出您期望的答案。

>>> 10 / 90.0
0.1111111111111111

所以在你的情况下:

>>> float(20-10) / (100-10)
0.1111111111111111
>>> (20-10) / float(100-10)
0.1111111111111111
网友
2楼 · 发布于 2024-03-29 13:02:36

您使用的是Python2.x,其中整数除法将被截断,而不是变成浮点数。

>>> 1 / 2
0

你应该做一个float

>>> float(10 - 20) / (100 - 10)
-0.1111111111111111

或者from __future__ import division,强制/采用Python 3.x的行为,该行为总是返回一个浮点数。

>>> from __future__ import division
>>> (10 - 20) / (100 - 10)
-0.1111111111111111
网友
3楼 · 发布于 2024-03-29 13:02:36

在除法之前你需要把它改成浮点数。即:

float(20 - 10) / (100 - 10)

相关问题 更多 >