python decimal四舍五入精确保留2位小数

python decimal四舍五入精确保留2位小数,第1张

python保留2位小数一般用以下几种:
①round函数
②format(float_num,'02f')
③decimal

一、先说下这次的重点想说的decimal,可以精确四舍五入保留两位小数。
①可以传给decimal整形或者字符型,不能传浮点型,因为浮点型本身就是不精确的数
但是如果一定要是浮点型,可以以下:

正常情况下

二、round函数,大部分情况下可以四舍五入,但是遇到要保留位数后一位是5时,是不会进1位的

三、format和round类似

f = lambda x, n: round(x, n - len(str(int(x))));

定义了一个方法f,用来实现你所说的功能。

输入:

f(123456789, 8)

输出:

12345678

输入:

f(123456789, 8)

输出:

12345679000000001

f接收2个参数,第一个参数是要求有效位数的数字,第二个参数是设置有效位数。第二次输出中的数字不够准确,这跟python处理小数的方式有关,如果想要准确的数字可以使用python decimal类。或者用python3k

扩展资料

#include <stdioh>

#define C "C Programming"

int main(void)

{

int a=12345;

float b=512345678;

char e,d,f;

scanf("%c %c %c",&e,&d,&f);

printf("int is:%d\n",a);

printf("float is:%f\n",b);

printf("char is:%s\n",C); 

return 0;

}

1,对于浮点数

a=136852

a=round(a,2)

print a

#结果136

2,对于整数

from decimal import Decimal

a=1

a=Decimal(a)quantize(Decimal('000'))

print a

#结果100

3,通用方法

a=1

a=("%2f" % a)

print a

#结果100

参考资料:

百度百科 Python

百度百科 printf

是的。
python3与python2相比,改进很多的。
如果你是想学习一下python ,可以直接学习 python 3
如果你是想用python做开发,那推荐用 python26或python27。
因为3代表未来,但配套的第三方库不全。

通常,python四舍五入使用内置的round函数就可以了
>>> round(04)
00
>>> round(05)
10
然而,对于需要精确的四舍五入,就有问题
>>> round(1115,2) # no
111
>>> round(1125,2) # yes
113
原因是,部分小数无法完全用二进制表示
再来看一下步骤一的两个数值
于是,作为一个较方便的做法,我们可以使用下面方式实现精确的四舍五入:
def round_up(value):
"""四舍五入保留2位小数
:param value:数值
:return:四舍五入后的值
"""
# 替换内置round函数,实现保留2位小数的精确四舍五入
return round(value 100) / 1000
6
原理就是将数值放大100倍,以利用下面的精确的四舍五入的结果
7
测试一下:
>>> round_up(1115)
112
>>> round_up(1125)
113

它是内置函数。build-in,应该是C语言的。用的应该是 c的library
在python273源码中
有这样一句。pymathh:extern double round(double);
在pymathc中定义如下:
#ifndef HAVE_ROUND
double
round(double x)
{
double absx, y;
absx = fabs(x);
y = floor(absx);
if (absx - y >= 05)
y += 10;
return copysign(y, x);
}

1035。

注意!注意!注意!round()并不是四舍五入,而是向最近值取整,如果与前后两个整数的差值一样,则会取偶数的一边。

举例:round(25)=2, round(35)=4。

附我的博客:

Python3中的地板除与浮点数四种取整方式


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/10379912.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-08
下一篇 2023-05-08

发表评论

登录后才能评论

评论列表(0条)

保存