python中的round内建函数

 今天又扫了一遍数字这一章.. 看到了round()函数, 是在python核心编程思想的5.6.2节的末尾, 原文如下:

 

round(flt, ndig=0) 接受一个浮点数 flt 并对其四舍五入,保存 ndig位小数。
若不提供ndig 参数,则默认小数点后0位。
round()仅用于浮点数。(译者注:整数也可以, 不过并没有什么
实际意义)

 

其实, 做个实验就知道, round()对整数也是有用的, 第二个参数ndig是一个相对偏移. 是相对于小数点那个位置来说的, 向右, 也就是小数部分, 正数来表示, 向左, 也就是整数部分, 用负数来表示.

 

比如:

round(345, -1) = 350.0

round(345, -3) = 0.0

 

round(345, 0) = 345.0

round(345.2345, 2) = 345.23000000000002

 

345.2345四舍五入到小数点后两位, 怎么会成这样呢??

 

这个是精度问题引起的, 不细究. 我们引入decimal模块后, 使用decimal.Decimal(str(round(345.2345, 2)))就可以看出精确的值了.  是Decimal("345.23")...

 

明天发布下一集...呵呵, 还是数字相关的....谢谢各位朋友...

你可能感兴趣的:(编程,python)