先来看看Python内置的四舍五入函数:
round(x, n)
- 该函数返回传入的x数值(浮点型或整型)的四舍五入值;
- 参数n表示对x进行四舍五入时保留/参考的数位精度;
- 参数n可以不传入,此时其默认值为0,但若传入的话,则必须为整型;
- 当n为0时,返回的结果为整型,n为负整数或正整数时,返回值的数值类型与传入的x数值的类型一样(整型或者浮点型);
- 若n为正整数,则表示四舍五入时保留/参考的小数点后的位数;
- 若n为负整数,-1表示基于十位四舍五入(舍弃个位)、-2表示基于百位四舍五入(舍弃个位和十位),依次类推;
- round返回的是数值(整型或者浮点型),对于数值,我们关注的是准确性,因为数值是用于算术运算的,比如round(31415.0, 2),得到的结果是“31415.0”,是完全符合要求的,既按约定返回了浮点型(因为传入的参数也是浮点型),同时,也完全满足小数点后2位的数位精度(或者说有效位数),因为对于数值来说,“31415.0”与“31415.00”是完全相等的;
- 但需要注意的是:上述谈到的“数值”的有效位或者精准度,与我们平时提到的“保留多少有效位”,两者的概念是不一样的,或者说至少在编程方面,两者是不同层面的事情,前者关注的是“数值”的精准度,后者用于显示或输出,关注的是对数值的字符串格式化;
- 因此,若数值四舍五入后,用于算术表达式计算,我们则采用round函数对数值进行四舍五入处理,要是仅用于按要求保留有效位显示输出,则直接采用字符串格式化输出即可,例如:f’{31415:.2f}’,输出为“31415.00”。
如下代码所示,各打印了两个数,前者按round调用后返回的真实数值输出,后者按字符串格式化输出。
print('对3.14159265保留小数点后3位、四舍五入的结果:',round(3.14159265, 3), f'{3.14159265:0.3f}')
print('对31415.9265仅保留整数部分、四舍五入的结果:',round(31415.9265), f'{31415.9265:.0f}')
print('对31415.9265基于百位进行四舍五入的结果:',round