①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
参考资料:
百度百科 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中的地板除与浮点数四种取整方式
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)