python把浮点数转换成整数_最安全的方法来将浮点数转换为整数在Python中?

这工作不是微不足道的! 它是IEEE浮点表示的一个属性,如果所讨论的数字的幅度足够小,但int(floor(2.3))可能是1,则可能有不同的表示。

这篇文章解释了为什么它在这个范围内工作 。

在double中,你可以代表32位整数,没有任何问题。 不能有任何舍入问题。 更确切地说,双打可以代表2 53和-2 53之间的所有整数。

简短说明 :一个double可以存储多达53个二进制数字。 当你需要更多的时候,这个数字在右边填零。

因此,53个是最大的可以存储没有填充的数字。 自然地,所有需要较less数字的(整数)数字都可以被精确地存储。

加一个111(省略)111 (53个)产生100 … 000(53个零)。 正如我们所知,我们可以存储53位数字,这使得最右边的零填充。

这是2 53来自哪里。

更多细节:我们需要考虑IEEE-754浮点如何工作。

1 bit 11 / 8 52 / 23 # bits double/single precision [ sign | exponent | mantissa ]

然后计算如下(不包括与此无关的特殊情况):

-1 符号 ×1.mantissa×2 指数 – 偏差

其中bias = 2 指数 – 1 – 1 ,即1023和127分别为双精度/单精度。

知道乘以2 X只是简单地将所有位X位移到左边,很容易看出任何整数都必须在尾数的小数点右边的所有位都为零。

除零以外的任何整数在二进制中具有以下forms:

1x … x其中x -es表示MSB右边的位(最高有效位)。

因为我们排除了零, 总是会有一个MSB,这就是为什么它没有被存储。 要存储整数,我们必须把它带入前面的forms: -1 符号 ×1.mantissa×2 指数 – 偏差 。

这就像移位小数点一样,直到只有最高位在MSB的左边。 然后将所有小数点右边的位存储在尾数中。

由此我们可以看到,我们最多可以存储52位二进制数字。

由此可见,所有比特被明确存储的最高数字是

111(omitted)111. that's 53 ones (52 + implicit 1) in the case of doubles.

为此,我们需要设置指数,使得小数点将被移位52位。 如果我们要将指数增加1,我们就不能知道小数点后面的数字。

111(omitted)111x.

按照惯例,它是0.设置整个尾数为零,我们收到以下数字:

100(omitted)00x. = 100(omitted)000.

这是一个1,其次是53个零,52个存储和1个由于指数增加。

它代表2 53 ,它标志着我们可以准确地表示所有整数的边界(包括正面和负面)。 如果我们想把1加到2 53 ,我们必须将隐含的零(用x表示)设置为1,但这是不可能的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用numpy库的astype()函数将点数矩阵转换整数型矩阵,代码示例如下:arr=np.array([[1.1,2.2,3.3],[4.4,5.5,6.6],[7.7,8.8,9.9]])arr.astype(int) ### 回答2: 要将点数矩阵转换整数型矩阵,我们可以使用Python的内置函数和库来完这个任务。首先,需要导入NumPy库以便使用其转换函数。 首先,需要将点数矩阵存储在一个NumPy数组。如果还没有安装NumPy库,可以使用以下命令进行安装:`pip install numpy`。 然后,可以使用`numpy.round()`函数来将点数矩阵进行四舍五入操作。这个函数将返回一个新的数组,其的每个元素是四舍五入后的整数值。 接下来,可以使用`numpy.astype()`函数将四舍五入后的数组转换整数型矩阵。该函数可以指定所需的数据类型,使用`np.int32`或`np.int64`来转换为32位或64位整数。 下面是一个示例代码,说明如何使用Python点数矩阵转换整数型矩阵: ```python import numpy as np # 定义点数矩阵 float_matrix = np.array([[1.2, 2.5, 3.7], [4.9, 5.1, 6.3]]) # 将点数矩阵四舍五入 rounded_matrix = np.round(float_matrix) # 将四舍五入后的矩阵转换整数型矩阵 int_matrix = rounded_matrix.astype(np.int32) # 输出结果 print(int_matrix) ``` 这将输出以下结果: ``` [[1 2 4] [5 5 6]] ``` 这样,我们就功地将点数矩阵转换整数型矩阵。可以根据实际需求来选择所需的数据类型和四舍五入规则。 ### 回答3: 要将点数矩阵转换整数型矩阵,可以使用Python的numpy库来实现。首先,需要安装numpy库,可以通过在终端输入命令"pip install numpy"来进行安装。 安装好numpy库之后,可以使用以下代码来实现点数矩阵到整数型矩阵的转换: ``` python import numpy as np # 定义一个点数矩阵 float_matrix = np.array([[1.2, 2.3, 3.4], [4.5, 5.6, 6.7]]) # 将点数矩阵转换整数型矩阵 int_matrix = float_matrix.astype(int) print("整数型矩阵:") print(int_matrix) ``` 在以上代码,首先通过`np.array`函数定义一个点数矩阵`float_matrix`。然后,通过`astype`函数将点数矩阵转换整数型矩阵,并将结果赋值给`int_matrix`。最后,使用`print`函数将整数型矩阵打印出来。 运行以上代码,将输出转换后的整数型矩阵: ``` 整数型矩阵: [[1 2 3] [4 5 6]] ``` 可以看到,点数矩阵的每个元素都被转换为了相应的整数值。这样就功将点数矩阵转换为了整数型矩阵。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值