** 1、’%.2f ’ % f 方法(推荐)
2、format函数(推荐)
3、round()函数
4、步进行四舍五入,直接进行截断**
// An highlighted block f = 1.23456 print('%.4f' % f) >1.2346 print('%.3f' % f) >1.235 print('%.2f' % f) >1.23
// An highlighted block print(format(1.23456, '.2f')) >1.23 print(format(1.23456, '.3f')) >1.235 print(format(1.23456, '.4f')) >1.2346
这个方法会进行四舍五入
该方法不推荐大家使用,存在大量的坑…
// An highlighted block a = 1.23456 b = 2.355 c = 3.5 d = 2.5 print(round(a,3)) >1.235 这里四舍五入了 print(round(b,2)) >2.35 这里居然没四舍五入 print(round(c)) >4 这里3.5变成4了 print(round(d)) >2 这里2.5居然变成2了
1)可以放大指定的倍数,然后取整,然后再除以指定的倍数;
// An highlighted block //保留三位小数截断 python3 print(int(1.23456 * 1000) / 1000) >1.234
2)使用字符串截取,截取小数点后指定的位数
// An highlighted block num = '123456' //字符串num print(num[:3]) >123
如果是1.23456取2位小数(截取2位小数),只需要把小数点右边的当作字符串截取即可
partition()函数:将字符串根据字符切割
// An highlighted block num = '1.23456' //字符串num num_str = num.partition('.') print(num_str) >('1','.','23456') //三个元素的元组
拼接字符串:format函数的使用
方法一:
// An highlighted block def get_two_float(f_str,n): a,b,c = f_str.partition('.') c = c[:n] return '.'.join([a,c]) num = '1.23456' //(1)隐患1:传入函数的是字符串 print(get_two_float(num,2)) >1.23 num2 = '1.2' //(2)隐患2:传入的字符串小数位小于最终取的位数 print(get_two_float(num2,2)) >1.2
最终版本:
// An highlighted block def get_two_float(f_str, n): f_str = str(f_str) // f_str = '{}'.format(f_str)也可以转换成字符串 a,b,c = f_str.partition('.') c = (c+'0' * n)[:n] //无论传入的字符串有集为小数,在字符串后面都添加n位小数0 return '.'.join([a,c]) num = 1.23456 print(get_two_float(num,2)) >1.23 num2 = 123.4 print(get_two_float(num2,2)) >123.40
Python在字符串格式化的两种方法
相对基本格式化输出采用%的方法,format()功能更强大,该函数把字符串当成一个模板,通过传入的参数进行格式化,并且使用大括号{}作为特殊字符代替%
1、format,位置匹配(最常用)
字符串类型格式化采用format()方法,基本使用格式是;
<模板字符串>.format(<逗号分隔的参数>)
调用format()方法后会返回一个新的字符串,参数从0开始编号;
format()方法可以非常方便的连接不同类型的变量或内容
// An highlighted block "{}:计算机{}的CPU 占用率为{}%。".format("2016-12-31","python",10) >> '2016-12-31:计算机python的CPU 占用率为10%。'
// An highlighted block '圆周率{1}是{2}{0}'.format('...',3.1415926,'无理数',) >> '圆周率3.1415926是无理数...'
// An highlighted block '今天是{name}的{key}生日会'.format(22,11,name = '帅哥',key = 18) >>'今天是帅哥的18生日会' '今天是{name}的{key}生日会,接着上{}'.format('test',name = '帅哥',key = 18) >>'今天是帅哥的18生日会,接着上test' // 以下会报错 '今天是{name}的{key}生日会,接着上{}'.format(name = '帅哥',key = 18,'test') "今天是{0}的{}生日会".format("帅哥", 18)
小结:
2、format,指定数据类型输出
print("整数{:d}".format(123)) >>整数123 print("浮点数{:5.2f}".format(123.19)) >>浮点数123.19 print("字符串{:s}".format('123')) >>字符串123 print("八进制{:o}".format(12)) >>八进制14 print("十六进制{:x}".format(13)) >>十六进制d
小结:
// An highlighted block print('关键字 {num :d}'.format(num=123)) >关键字 123 print('数字编号 {0:d},{1:s}'.format(123,'123)) >数字编号 123,123
3、format,位数补齐
// An highlighted block print('默认左对齐,宽度为10,不足补空格:{:10}'.format('123'),'end') print('左对齐,宽度为10,不足补空格:{:<10}'.format('123'),'end') print('右对齐,宽度为10,不足补空格:{}{:>10}'.format('start','123')) print('右对齐,宽度为10,取两位小数,不足补0:{:0>10.2f}'.format(222.225)) // 执行结果 默认左对齐,宽度为10,不足补空格:123 end 左对齐,宽度为10,不足补空格:123 end 右对齐,宽度为10,不足补空格:start 123 右对齐,宽度为10,取两位小数,不足补0:0000222.22
小结:
4、format,拓展使用
// An highlighted block print("总是显示符号:{:0>+8.2f},{:0>+8.2f}".format(3.14, -3.14)) print("百分数:{:%} {:.2%}".format(3 / 7, 3 / 7)) print("逗号分隔,一般用在金钱 {:,}".format(12345678) //执行结果 总是显示符号:000+3.14,000-3.14 百分数:42.857143% 42.86% 逗号分隔,一般用在金钱 12,345,678
小结: