gpt4 book ai didi

python 3.3.2 我对函数 "round"有正确的理解吗?

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

抱歉,我真的不知道 python 3.3.2 文档中 round 的定义是什么意思:

round(number[, ndigits])
Return the floating point value number rounded to ndigits digits after the decimal point. If ndigits is omitted, it defaults to zero. Delegates to number.__round__(ndigits).

For the built-in types supporting round(), values are rounded to the closest multiple of 10 to the power minus ndigits if two multiples are equally close, rounding is done toward the even choice (so, for example, both round(0.5) and round(-0.5) are 0, and round(1.5) is 2). The return value is an integer if called with one argument, otherwise of the same type as number.

我不知道 10 的倍数pow 是怎么来的。

阅读以下示例后,我认为 round(number,n) 的工作方式如下:

如果让number123.456,让n2

  1. round 将得到两个数字:123.45123.46

  2. round 比较 abs(number-123.45) (0.006) 和 abs(number-123.46) (0.004),以及选择较小的那个。

  3. 所以,123.46 就是结果。

如果让 number123.455,让 n2:

  1. round 将得到两个数字:123.45123.46

  2. round 比较 abs(number-123.45) (0.005) 和 abs(number-123.46) (0.005)。他们是平等的。所以 round 检查 123.45123.46 的最后一位。偶数为结果。

  3. 所以,结果是123.46

我说得对吗?

如果不是,您能否提供一个易于理解的版本,值四舍五入到最接近的 10 的幂减 n 位数

最佳答案

ndigits = 0 => pow(10, -ndigits) = 10^(-ndigits) = 1
ndigits = 1 => pow(10, -ndigits) = 10^(-ndigits) = 0.1
etc.

>>> for ndigits in range(6):
... print round(123.456789, ndigits) / pow(10, -ndigits)
123.0
1235.0
12346.0
123457.0
1234568.0
12345679.0

基本上,您得到的数字总是 10^(-ndigits) 的整数倍。对于ndigits=0,这意味着你得到的数字本身就是一个整数,对于ndigits=1,这意味着它在小数点后不会有超过一个非零值。

关于python 3.3.2 我对函数 "round"有正确的理解吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20048986/

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