[求助]帮忙看哈子了,一个作业题。。。。
<p></p><p>加载运行时候输入30、50后则出现乘积为负数的结果,怎么回事?小弟想不出来哈~~~~</p> 看不明白?是不是阶乘? <p>把你的问提取出来。当repeat第9次的时候就相当于执行下面的运算:</p><p>(* 398808576 39)</p><p>但不知为什么产生的是负数?</p> 超过了长整型数的正数表达范围,(* 398808576. 39)就可得到正确结果 <p>比如输入A=1,B=100则结果为0</p><p>这样才是超出了范围吧?我认为超出范围返回结果为0,不能是负数吧?</p> <p>是整型数超范围引起的。这样处理:</p><p> (repeat nn<br/> (setq cj (* 1. cj num_cr));此句修改<br/> (setq num_cr (1+ num_cr))<br/> )<br/> (prin1)<br/> (setq str1(strcat"A="(itoa num_s)))<br/> (setq str2(strcat"B="(itoa num_e)))<br/> (setq str3(strcat"乘积="(rtos cj 2 0)));此句修改</p> 本帖最后由 作者 于 2009-1-12 18:50:27 编辑 <br /><br /> liu_kunlun发表于2009-1-11 16:33:00static/image/common/back.gif是整型数超范围引起的。这样处理: (repeat nn (setq cj (* 1. cj num_cr));此句修改 (setq num_cr (1+ num_cr)) ) (prin<p>多谢多谢,先转换成实数,再用rtos转化为字符串输出。。。</p>
页:
[1]