今天又扫了一遍数字这一章.. 看到了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")...
明天发布下一集...呵呵, 还是数字相关的....谢谢各位朋友...
分享到:
2009-11-12 17:11
浏览 471
评论