gpt4 book ai didi

python - 在 numpy 中四舍五入?

转载 作者:太空狗 更新时间:2023-10-30 02:02:17 24 4
gpt4 key购买 nike

我对 python pandas 和 numpy 有奇怪的问题。

>>> np.float64(1) * np.float64(85000) * np.float64(7.543709)
641215.26500000001

>>> round( np.float64(1) * np.float64(85000) * np.float64(7.543709), 2 )
641215.26000000001

>>> np.round( np.float64(1) * np.float64(85000) * np.float64(7.543709), 2 )
641215.26000000001

如何四舍五入得到正确的结果641215.27?

最佳答案

Numpy 的 round 方法有利于偶数,看看删节的 numpy 源代码:

def round_(a, decimals=0, out=None):
return around(a, decimals=decimals, out=out)

def around(a, decimals=0, out=None):
"""
Evenly round to the given number of decimals.

Notes
-----
For values exactly halfway between rounded decimal values, NumPy
rounds to the nearest even value. Thus 1.5 and 2.5 round to 2.0,
-0.5 and 0.5 round to 0.0, etc. Results may also be surprising due
to the inexact representation of decimal fractions in the IEEE
floating point standard [1]_ and errors introduced when scaling
by powers of ten.

Examples
--------
>>> np.around([0.37, 1.64])
array([ 0., 2.])
>>> np.around([0.37, 1.64], decimals=1)
array([ 0.4, 1.6])
>>> np.around([.5, 1.5, 2.5, 3.5, 4.5]) # rounds to nearest even value
array([ 0., 2., 2., 4., 4.])
>>> np.around([1,2,3,11], decimals=1) # ndarray of ints is returned
array([ 1, 2, 3, 11])
>>> np.around([1,2,3,11], decimals=-1)
array([ 0, 0, 0, 10])

"""

示例:

如果你需要打印字符串,你可以格式化它来给你正确的答案:

import numpy as np

num = np.float64(1) * np.float64(85000) * np.float64(7.543709)
print(num)
print(float("{0:.2f}".format(num)))
print(np.round(num, 2))
print()

num += 0.02
print(num)
print(float("{0:.2f}".format(num)))
print(np.round(num, 2))

给你

641215.265
641215.27
641215.26

641215.285
641215.29
641215.28

关于python - 在 numpy 中四舍五入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42813777/

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