Originally posted by he200377 at 2006-10-16 02:10:
我想个解决根本的方法,呵呵,算之前把小数的位数搞一样,呵呵,问题就好解决多了
Last edited by he200377 on 2006-10-16 at 02:11 ]
he200377兄81楼的代码一定花了不少心思, 呵呵~ 不错.
但在运算浮点数时有很大的局限性, 这里提几点不成熟的建议, 也不知分析得是否正确:
1. 生成ver_.txt临时文件, 这个只要把变量用好一点, 完全不用产生临时文件.
2. 看了去零的那段子函数, 你用了二十行, 其实几行就可以解决了.
3. 最大的缺陷就是你说的9.99/9, 看了你的代码, 在这点上考虑得不全面. 出错主要在去掉除数与被除数时的小数点进位. 在最后小数点进位时, 无论%x_wei%是什么值你都采取0.xxx这样的方式进位. 整数本来为正数, 小数点进位时整数位就成了小数.
这里你说的把小数位先对齐再计算也是一个好主意, 但原本就只可以运算9位以内的数, 这样运算范围会变得更小. 不是一个好的解决方案.
建议你在最后把运算结果的小数点位置读取出来, 再根据%x_wei%来进位. 如果位数不足再补零.
4. qwe1234567版主说的3.2/0.32 和0.32/0.032无法算!当除数的整数为零时出错很严重, 在最后处理小数点时出现了死循环.
5. 0.123/123=0.002609756097 这里在读取被除数时产生了错误, 字符被倒置.
这个算法还不成熟, 而且有局限性, 最重要是不能突破位数的限制.
但处理整数时却可以提高精度.
兄弟还得继续努力, 要想突破位数限制这个算法是无法实现的.
Last edited by pengfei on 2006-10-16 at 08:20 ]