小编Dan*_*oni的帖子

numpy.int64次int - > numpy.float64

我正在使用python3和numpy版本1.8.2(与numpy 1.10.4和python2相同的问题)并试图做一些非常基本的东西:乘以两个整数.

import numpy as np
a = 9223372036854775808
type(a)
b = np.int64(0)
type(b)
type(b*a)
Run Code Online (Sandbox Code Playgroud)

但输出是:

builtins.int
numpy.int64
numpy.float64
Run Code Online (Sandbox Code Playgroud)

所以两个整数的乘法返回一个浮点数!有没有合理的解释呢?

请注意,如果我改为

a = 9223372036854775807
type(b*a)
Run Code Online (Sandbox Code Playgroud)

回报

numpy.int64
Run Code Online (Sandbox Code Playgroud)

如果我把它提高到

a = 92233720368547758100
type(b*a)
Run Code Online (Sandbox Code Playgroud)

返回(在python3中)

builtins.int
Run Code Online (Sandbox Code Playgroud)

和(在python2中)

long
Run Code Online (Sandbox Code Playgroud)

据我所知,必须有一些溢出,但为什么呢?

python types numpy

13
推荐指数
1
解决办法
1359
查看次数

标签 统计

numpy ×1

python ×1

types ×1