Python论坛  - 讨论区

标题:RE: [python-chinese] round 的问题

2005年04月13日 星期三 22:25

Xin LI delphij at frontfree.net
Wed Apr 13 22:25:28 HKT 2005

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
> 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号