2006年01月02日 星期一 11:57
写一个函数,该函数接受三个参数,分别为 分子,分母,结果位数 该函数可以计算任意数除法到任意精度(自定义小数位数) 如果小数部分循环的,可以只列出第一次循环的部分,然后注明后面循环 俺写了一个(目前还不能处理循环结) def cf(fz,fm,ws=1000): jg=[]; for i in xrange(ws): if i==0: zs,ys=divmod(fz,fm) zs=str(zs) jg=[zs,'.'] else: ZS,ys=divmod(fz,fm) jg.append(str(ZS)) if ys==0: break fz=ys*10 return ''.join(jg) -- 开飞机的舒克 http://www.lvye.org/shuke msn:weizhong at netease.com -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060102/12861d77/attachment.html
2006年01月02日 星期一 13:24
难在那个任意选取位数上 大牛们做起来肯定特简单 我看了一下魏忠兄的程序 哈哈,随便借机了解了一下divmod函数。 至于那个str函数还看的不是很懂 看帮助又觉得蒙,自己动手用,又发现无论浮点数还是整型数据,在w=str(w)之后没什么变化 实在看不出作用是? 在06-1-2,魏忠 <weizhong2004 at gmail.com> 写道: > > 写一个函数,该函数接受三个参数,分别为 分子,分母,结果位数 > 该函数可以计算任意数除法到任意精度(自定义小数位数) > 如果小数部分循环的,可以只列出第一次循环的部分,然后注明后面循环 > 俺写了一个(目前还不能处理循环结) > > def cf(fz,fm,ws=1000): > jg=[]; > for i in xrange(ws): > if i==0: > zs,ys=divmod(fz,fm) > zs=str(zs) > jg=[zs,'.'] > else: > ZS,ys=divmod(fz,fm) > jg.append(str(ZS)) > if ys==0: break > fz=ys*10 > return ''.join(jg) > > -- > > 开飞机的舒克 > http://www.lvye.org/shuke > msn:weizhong at netease.com > _______________________________________________ > python-chinese > Post: send python-chinese at lists.python.cn > Subscribe: send subscribe to python-chinese-request at lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request at lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese > > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060102/e888c966/attachment.htm
2006年01月13日 星期五 23:18
下面是我的程序,可以标出循环节的 BTW,土问一句:join()什么语义?我用return intPart.join(frac)不对 #!/usr/bin/python # -*- coding: utf-8 -*- ##写一个函数,该函数接受三个参数,分别为 分子,分母,结果位数 ##该函数可以计算任意数除法到任意精度(自定义小数位数) ##如果小数部分循环的,可以只列出第一次循环的部分,然后注明后面循环 def div_w_prec(dividend, divisor, precision=1000): div, mod= divmod(dividend, divisor) intPart = str(div) + '.' pos = 0; modDict = {}; frac = [] while pos < precision and mod != 0 : modDict[mod] = pos mod *= 10 div, mod = divmod (mod, divisor) frac.append(str(div)) if mod in modDict.keys(): break pos += 1 if mod in modDict.keys(): # 发现循环 frac.insert(modDict[mod],'(') frac.append(')') return intPart + ''.join(frac) print div_w_prec(97, 37) -- regards, yzhh
2006年01月14日 星期六 00:47
ok, join知道什么意思了,现在的问题是:有没有更直接的做法,比如concat(list)? 另外,我前面的程序如果要接受浮点数作参数,需要把两处“str(div)”改成“str(int(div))” -- regards, yzhh
Zeuux © 2025
京ICP备05028076号