手机端网站整站下载,网站建设的细节处理,小程序怎么上架商品,鄂尔多斯公司网站建设对小数在Python中实现四舍五入的方法#xff0c;不能使用round函数#xff0c;round函数的执行的是HALF EVEN#xff0c;不是四舍五入(HALF UP)。而使用decimal模块提供的接口#xff0c;就可以精确实现十进制小数的四舍五入。本文对这个topic进行详细介绍。Python的浮点数…对小数在Python中实现四舍五入的方法不能使用round函数round函数的执行的是HALF EVEN不是四舍五入(HALF UP)。而使用decimal模块提供的接口就可以精确实现十进制小数的四舍五入。本文对这个topic进行详细介绍。Python的浮点数说到小数程序员的第一反应可能就是想到了浮点数小数和浮点数是两个概念。Python中的浮点数float对象对应的是机器底层的双精度浮点数。这意味着float对象的值并不是一个精确的值比如 0.1 0.1 0.1 0.3False 0.1 0.20.30000000000000004所以对于float对象的数值比较操作要格外小心原则上浮点数是不能使用 来判断的。浮点数是一个计算机底层概念它就是代表不精确的小数因为计算机有表示数据方面的硬件限制(参考IEEE754浮点数)。而我们日常说的小数就是带小数点的数。每一个小数在计算机中都有一个近似的浮点数的表示round函数执行银行家舍入法(HALF EVEN)round是一个Python的标准内置函数round在英文里就是对某个数进行舍入截取的意思而舍入截取的方式有很多四舍五入只是其中一种。从Python官方文档的说明中我们可以知道round函数执行的是HALF EVEN而不是四舍五入(HALF UP)。先看几个round函数的整数结果测试用例 round(-0.5)0 round(0.5)0 round(2.5)2 round(1.5)2HALF EVEN的含义就是在对一个数进行round的时候如果这个数与两边的数距离相等就选择偶数。就是上面的例子对0.5取整0.5到0的距离与到1的距离相等于是round函数就选择了0这个偶数。HALF EVEN被称为银行家舍入法它的另一条规则是向最近的数字舍入我们再来看几个round函数小数结果的例子看看高亮的3-6行round函数都干了些什么......我们要来分别看一下3.483.152.15以及5.15这四个小数对应的浮点数是什么样的就明白了decimal模块的Decimal对象可以将float数据映射为底层的更精确的表示。小数3.15的浮点数表示是3.1499999.....保留小数点后1位向最近的数字舍入就是3.1小数2.15的浮点数表示是2.1499999.....保留小数点后1位向最近的数字舍入就是2.1round函数没有做错看起来错在了float对象的不精确表示上面。(计算机无法用二进制来精确的表示十进制的小数)因此在一些对精度要求不是很高的地方我们可以使用round函数来做HALF EVEN的舍入。如果对精度要求很高呢如果我们就是要对小数3.15做小数点后1位的四舍五入得到3.2应该怎么办呢用decimal模块的接口做四舍五入使用decimal模块的接口可以实现小数精确的四舍五入。decimal模块是Python的一个标准库是专门为十进制小数的精确计算而设计的。用decimal模块做十进制小数的计算是符合直觉的 Decimal(0.1) Decimal(0.1) Decimal(0.1) Decimal(0.3)True Decimal(0.1) Decimal(0.2)Decimal(0.3)本文不对decimal模块做过多介绍只说明如何用它来做小数的精确的四舍五入请看如下代码 Decimal(2.15).quantize(Decimal(.0), roundingROUND_HALF_UP)Decimal(2.2) Decimal(3.15).quantize(Decimal(.0), roundingROUND_HALF_UP)Decimal(3.2) Decimal(3.14159265).quantize(Decimal(.0000), roundingROUND_HALF_UP)Decimal(3.1416) Decimal(3.14159265).quantize(Decimal(.000), roundingROUND_HALF_UP)Decimal(3.142) Decimal(3.14159265).quantize(Decimal(.00), roundingROUND_HALF_UP)Decimal(3.14) str(Decimal(3.14))3.14使用quantize成员函数第1个参数指定了精度关键是第2个参数指定了截取的方式ROUND_HALF_UP就是四舍五入最后可以轻松将Decimal对象转换成字符串。以上就是对于在Python中实现小数的四舍五入的方法介绍希望能被您喜欢...-- EOF --