gpt4 book ai didi

Python 将小数点限制在特定位置(不是圆形)

转载 作者:太空宇宙 更新时间:2023-11-04 09:59:52 25 4
gpt4 key购买 nike

我想将小数点限制到特定位置(不是圆形)。例如 1.5551.55 而不是 1.56pandasnumpy 是否有更好/内置的方式?这是我能想到的唯一方法。

import numpy as np

a = np.array([1.555, 2.559])

precision = 2
adj = 10 ** precision
np.floor(a * adj) / adj

array([ 1.55, 2.55])

最佳答案

对于数组,您不想使用字符串格式化方法。

In [175]: a = np.array([1.555, 2.559])
In [176]: a*100
Out[176]: array([ 155.5, 255.9])
In [177]: (a*100).astype(int)
Out[177]: array([155, 255])
In [178]: (a*100).astype(int)/100
Out[178]: array([ 1.55, 2.55])

因为 float 不精确,您可能会得到一些“错误”的结果,其中截断的值会少一个数字。


一个小的“保护”值可能就足够了(如果某些值是负数,则必须是一个具有相应正负值的数组):

In [179]: (a*100+.01).astype(int)/100
Out[179]: array([ 1.55, 2.55])

保护值的人工测试用例:

In [65]: a = np.array([1.555, 2.559, 1.25-1e-10])
In [66]: a
Out[66]: array([ 1.555, 2.559, 1.25 ])
In [67]: (a*100).astype(int)/100
Out[67]: array([ 1.55, 2.55, 1.24])
In [68]: (a*100+.01).astype(int)/100
Out[68]: array([ 1.55, 2.55, 1.25])

关于Python 将小数点限制在特定位置(不是圆形),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44187527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com