cabinsummer 发表于 2011-11-12 10:47:10

[风之影][经验]字符串长度

本帖最后由 cabinsummer 于 2011-11-12 10:48 编辑

我在LISP大挑战第一季里公布了一个计算圆周率的方法。但在计算4000位时总是出错。经过一番探索发现,LISP不能处理长度超过4096的字符串。
过程如下:计算4000位时,开始是6位一组,中间加一空格输出,出错。我以为是算法问题,将分组改为5位一组计算4000位,但还是出错。计算3000位时则没有问题。因此我想找到一个临界值,到底在哪里会发生问题。经过一番奋斗,发现5位一组,在3410时是正确的,在3415位时出错。3410位输出的字符串长度为3410/5*6+2=4094,3415位输出的字符串长度为3415/5*6+2=4100,实际上已经不可能正确输出了。我改用表的形式输出,超过3415位也不会出错。反复调试后,确定LISP能处理的最大字符串长度为4096,也就是4K。超长的字符串在我们平时编程中很难遇到,所以有此经验给大家分享。
页: [1]
查看完整版本: [风之影][经验]字符串长度