Python 将float转换为int,并在舍入时引发异常
例如,我有:Python 将float转换为int,并在舍入时引发异常,python,numpy,floating-point,Python,Numpy,Floating Point,例如,我有: a = np.array(...) a[idx / 3] = 5 idx/3将是一个float,即使它在该程序中始终有一个整数值。这将引发一个VisibleDepractionWarning,或者新的Python版本已不再支持该警告 是否有一个内置函数可以将浮点值转换为int值,并在输入值不是整数时引发异常?或者正确的方法是什么? 我知道这也可能会导致一些关于“有多接近”整数的问题,这就是为什么我会问,而不仅仅是信任floor/ceil请明确: assert (idx % 3)
a = np.array(...)
a[idx / 3] = 5
idx/3
将是一个float
,即使它在该程序中始终有一个整数值。这将引发一个VisibleDepractionWarning
,或者新的Python版本已不再支持该警告
是否有一个内置函数可以将浮点值转换为int值,并在输入值不是整数时引发异常?或者正确的方法是什么?
我知道这也可能会导致一些关于“有多接近”整数的问题,这就是为什么我会问,而不仅仅是信任floor
/ceil
请明确:
assert (idx % 3) == 0, "idx must be divisible by 3"
a[idx // 3] = 5
为什么
idx
是浮动的?首先看起来有点像设计问题?@WillemVanOnsem:因为一个整数除以另一个整数似乎会导致浮点,即使这个数字实际上有整数值。是的,如果在Python-3中使用/
执行此操作。但是,如果使用/
,则它是整数除法。这会给出索引器:在numpy 1.12上,只有整数、片(`:`)、省略号(`…`)、numpy.newaxis(`None`)和整数或布尔数组是有效的索引。只有当idx
是浮点时,才需要将idx//3
的结果实际转换为整数