杜郎俊赏 - dujun.io

高精度求商

编程目的

闲来无事,我看了一下存储,手机已用5872K,存储卡已用96756K。脑中冒出一个无聊的问题,大家都知道要珍惜手机存储容量,那么我的存储卡已用是手机已用的多少倍呢?拿来手头的科学计算器一算,结果是:16.47752044,明显不是精确结果。又用windows自带的计算器软件算,结果是16.477520435967302452316076294278,肯定还不是最终结果。于是我就无聊地想知道最精确的结果,自己手算是不可能的,我这么懒的人……于是就编了这么一个程序。

这个程序可以将两个整数相除以最简分数和小数形式给出结果。小数会判断是有尽小数还是循环小数,并指出循环节。可以保证精确到小数点后万位左右,我只测试了几组测试数据,我想不出循环节变态到小数点后一万位的测试数据,但是即便有,也只需修改程序开头的数组大小就能扩大精确度。读者请参考附带的源码自己修正。

知识回顾

两个有理数相除(除数不能为0)的结果,一定可以表示成最简分数,也可以表示成有尽小数或者无限循环小数。

演示

附件

[附件]源码下载

日期:2007-08-24