f = lambda x, n: round(x, n - len(str(int(x))));
网站建设哪家好,找成都创新互联!专注于网页设计、网站建设、微信开发、微信小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了当雄免费建站欢迎大家使用!
定义了一个方法f,用来实现你所说的功能。
输入:
f(123.456789, 8)
输出:
123.45678
输入:
f(1.23456789, 8)
输出:
1.2345679000000001
f接收2个参数,第一个参数是要求有效位数的数字,第二个参数是设置有效位数。第二次输出中的数字不够准确,这跟python处理小数的方式有关,如果想要准确的数字可以使用python decimal类。或者用python3k
扩展资料
#include stdio.h
#define C "C Programming"
int main(void)
{
int a=12345;
float b=5.12345678;
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=1.36852
a=round(a,2)
print a
#结果1.36
2,对于整数
from decimal import Decimal
a=1
a=Decimal(a).quantize(Decimal('0.00'))
print a
#结果1.00
3,通用方法
a=1
a=("%.2f" % a)
print a
#结果1.00
参考资料:百度百科 Python
百度百科 printf
import math
s = 4.65
maht.modf(s)[0] #modf(s)取出小数和整数,[0]是取出小数部分,[1]是取出整数部分。
1、使用字符串格式化
大部分语言都可以使用字符串格式化的方法来实现保留两位小数的效果,python也不例外:
a = 12.345
print("%.2f" % a) # %代表格式化输出,.2代表小数点后保留两位,f代表数据类型是浮点型
2、使用round内置函数
python内置了一个名为round的函数,这个函数可以用来对数据进行格式化。代码如下:
a = 12.345
a1 = round(a, 2) #将a通过round函数处理后赋值给a1.传入的2代表保留两位小数
print(a1)
3、使用decimal模块
类似于java,python也专门提供了一个decimal模块用于精确运算,它也可以进行数据的格式化输出。代码如下:
from decimal import Decimal
a = 12.345
Decimal(a).quantize(Decimal("0.00")) # 使用默认的进位方式(同round)“0.00”表示保留小数点后两位
以上就是常规的保留两位小数的方法,接下来介绍两种非常规的方法(使用字符串处理的方法,这种方法仅保留两位小数,不做四舍五入)
4、使用序列切片
原理很简单,只要找到小数点,然后进行切片即可。代码如下:
a = 12.345
str(a).split('.')[0] + '.' + str(a).split('.')[1][:2]
#使用序列切片的方式,切出小数点前的数据,还有小数点后两位的数据,然后进行拼装
5、使用re模块
类似于切片,不过这次使用正则匹配来定位小数点位置。
import re
a = 12.345
re.findall(r"\d{1.}?\.\d{2}", str(a))
#使用正则匹配,将符合规则(一个小数点前有很多位数字,小数点后面只有两位数字的片段)字符串片段取出
方法1:用round函数
a=12.34567889
round(a,1)=12.3
#保留一位小数
方法2:格式化输入
a=12.34567889
print(“%.1f”%a)
#保留一位小数
方法3:引入decimal函数
from decimal import Decimal
a=134.5657768
t=Decimal(“134.5657768”).quantize(Decimal(“0.0”))
print(t)
#输出结果:1134.5
情况一:保留两位小数,并做四舍五入处理
1、使用字符串格式化
2、使用round内置函数
情况二:保留两位小数,无需四舍五入处理
1、使用序列中切片
2、使用re模块