求有效数字要四舍五入吗?数字的四舍五入

学习《Python Cookbook》第三版 你想对浮点数执行指定精度的舍入运算,今天小编就来聊一聊关于求有效数字要四舍五入吗数字的四舍五入?接下来我们就一起去研究一下吧!

求有效数字要四舍五入吗?数字的四舍五入

求有效数字要四舍五入吗数字的四舍五入

学习《Python Cookbook》第三版

你想对浮点数执行指定精度的舍入运算。

对于简单的舍入运算,使用内置的 round(value, ndigits) 函数即可。比如:

print(round(1.23)) # 1 print(round(1.53)) # 2 print(round(-1.23)) # -1 print(round(1.23, 1)) # 1.2 print(round(1.23, 2)) # 1.23 print(round(1.23, 3)) # 1.23 print(round(-1.23, 1)) # -1.2

当一个值刚好在两个边界的中间的时候, round 函数返回离它最近的偶数。也就是说,对 1.5 或者 2.5 的舍入运算都会得到 2。

传给 round()函数的 ndigits 参数可以是负数,这种情况下,舍入运算会作用在十位、百位、千位等上面。比如:

print(round(1314151926, -1)) # 1314151930 print(round(1314151926, -2)) # 1314151900 print(round(1314151926, -3)) # 1314152000

不要将舍入和格式化输出搞混淆了。如果你的目的只是简单的输出一定宽度的数,你不需要使用 round() 函数。而仅仅只需要在格式化的时候指定精度即可。比如

x = 1.1314 print(format(1.1314, '0.2f')) # 1.13 print(format(1.1314, '0.3f')) # 1.131 print('Value is {:0.3f}'.format(x)) # Value is 1.131

同样,不要试着去舍入浮点值来” 修正” 表面上看起来正确的问题。比如,你可能倾向于这样做:

a = 2.1 b = 4.2 c = a b print(c) # 6.300000000000001 print(round(c, 2)) # 6.3

对于大多数使用到浮点的程序,没有必要也不推荐这样做。尽管在计算的时候会有一点点小的误差,但是这些小的误差是能被理解与容忍的。如果不能允许这样的小误差 (比如涉及到金融领域),那么就得考虑使用 decimal 模块了

官方对于Round函数的解释:

round(number[, ndigits])

Return number rounded to ndigits precision after the decimal point. If ndigits is omitted or is None, it returns the nearest integer to its input.

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). Any integer value is valid for ndigits (positive, zero, or negative). The return value is an integer if ndigits is omitted or None. Otherwise the return value has the same type as number.

返回小数部分的ndigits精度。如果ndigits省略或者为None,返回输入的最接近的整数

对于支持round函数的值,如果输入的 ndigits 参数可以是负数,则对最近10的倍数进行四舍五入,个位、十位、百位、千位。

如果两个值的倍数差不多,则四舍五入最接近的偶数部分,比如:round(0.5) 和 round(-0.5)为0,但是round(1.5)是2

任何整数对于参数ndigits都是有效的,正、负或零

如果省略参数ndigit或者为None,则返回一个整数。其他情况返回与数值相同的类型。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页