python中round函数怎么用

Python019

python中round函数怎么用,第1张

简单的说,round是使用四舍五入对小数进行位数控制的函数,

round(a, b), a参数是小数,b是小数点后保留的位数。

实际使用需要考虑的python2和python3版本的差异与小数精度的问题。

参考 http://www.cnblogs.com/anpengapple/p/6507271.html

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))

#使用正则匹配,将符合规则(一个小数点前有很多位数字,小数点后面只有两位数字的片段)字符串片段取出

它是内置函数。build-in,应该是C语言的。用的应该是 c的library

在python2.73.源码中

有这样一句。pymath.h:extern double round(double)

在pymath.c中定义如下:

#ifndef HAVE_ROUND

double

round(double x)

{

double absx, y

absx = fabs(x)

y = floor(absx)

if (absx - y >= 0.5)

y += 1.0

return copysign(y, x)

}