2005年04月13日 星期三 22:25
1.255不能用二进制表示吧……那样的话1.255应该首先变成一个接近的数值,那样 1.255就不再是1.255了,而是1.2549999......或者1.2550000.....。 猜的。 > -----Original Message----- > From: python-chinese-bounces at lists.python.cn > [mailto:python-chinese-bounces at lists.python.cn] On Behalf Of albertlee > Sent: Wednesday, April 13, 2005 10:10 PM > To: PythonCN > Subject: [python-chinese] round 的问题 > > >>> round(1.25,1) > 1.3 > >>> round(1.255,2) > 1.25 > ~~~~~~~~~~~ 为什么不是期望中的 1.26 ? > > 我找了源代码中的实现: > > static PyObject * > builtin_round(PyObject *self, PyObject *args) { > double x; > double f; > int ndigits = 0; > int i; > > if (!PyArg_ParseTuple(args, "d|i:round", &x;, &ndigits;)) > return NULL; > f = 1.0; > i = abs(ndigits); > while (--i >= 0) > f = f*10.0; > if (ndigits < 0) > x /= f; > else > x *= f; > if (x >= 0.0) > x = floor(x + 0.5); > else > x = ceil(x - 0.5); > if (ndigits < 0) > x *= f; > else > x /= f; > return PyFloat_FromDouble(x); > } > > 感觉没有问题阿? > > > > > 致 > 礼! > > > albertlee > hanzhupeng at 163.com > 2005-04-13 >
Zeuux © 2025
京ICP备05028076号