1.数字的四舍五入
对于简单的舍入运算,使用内置的 round(value, ndigits) 函数即可。
round 函数返回离它最近的偶数。也就是说,对 1.5 或者 2.5 的舍入运算都会得到 2。
>>> round(2.5) 2 >>> round(1.5) 2
round()的参数ndigits可以是负数,取整到十位,百位,千位, 效果如下:
>>> a = 13123213 >>> round(a, -1) 13123210 >>> round(a, -2) 13123200 >>> round(a, -3) 13123000
不要将舍入和格式化输出搞混淆了。如果你的目的只是简单的输出一定宽度的数, 不需要使用 round() 函数。只需要在格式化的时候指定精度即可。
>>> x = 1.231231241 >>> format(x, '0.4f') '1.2312' >>> 'value is {:0.3f}'.format(x) 'value is 1.231'
2.精确的小数计算
浮点数无法精确的表达出所有的十进制小数位。
>>> a = 4.2 >>> b = 2.1 >>> a + b 6.300000000000001 >>> (a + b) == 6.3 False
可以使用decimal模块来提高精确值,但是要牺牲一些性能。
>>> from decimal import Decimal >>> a = Decimal('4.2') >>> b = Decimal('2.1') >>> a + b Decimal('6.3') >>> print(a + b) 6.3 >>> (a + b) == Decimal('6.3') True
控制位数和四舍五入。
>>> from decimal import localcontext >>> a = Decimal('1.4') >>> b = Decimal('1.9') >>> print(a/b) 0.7368421052631578947368421053 >>> with localcontext() as num: ... num.prec = 3 ... print(a/b) ... 0.737 >>> with localcontext() as num: ... num.prec = 50 ... print(a/b) ... 0.73684210526315789473684210526315789473684210526316
3.格式化数值
1.使用内建函数format(),可以自定义保留多少位,居中等操作。想采用科学计算法,把 f 改为 e 或 E 即可。
>>> x = 1234.56789 >>> format(x, '0.2f') # 保留两位小数 '1234.57' >>> format(x, '>10.1f') #左边留白 ' 1234.6' >>> format(x, '<10.1f') #右边留白 '1234.6 ' >>> format(x, '^10.1f') # 居中 ' 1234.6 ' >>> format(x, ',') # 显示千位 '1,234.56789' >>> format(x, '0.1f') # 保留一位小数 '1234.6'
2.输出整数浮点数格式规则。
b: 输出整数的二进制方式;
c: 输出整数对应的Unicodez 字符;
d: 输出整数对应的十进制方式;
0: 输出整数对应的八进制方式;
x: 输出整数对应的小写十六进制方式;
X: 输出整数对应的大写十六进制方式;
>>> '{0:b}, {0:c}, {0:d}, {0:o}, {0:x}, {0:X}'.format(2333) '100100011101, झ, 2333, 4435, 91d, 91D'