小数点后面有n个8,这个小数是无限小数与有限小数比较还是有限小数


我们知道整数做除法时,有时嘚到有限小数有时得到无限循环小数。
如果我们把有限小数的末尾加上无限多个0它们就有了统一的形式。


本题的任务是:在上面的约萣下求整数除法小数点后的第n位开始的3位数。


 一行三个整数:a b n用空格分开。a是被除数b是除数,n是所求的小数后位置(0<a,b,n<)
一行3位数字表示:a除以b,小数后第n位开始的3位数字





请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容


所有代码放在同一個源文件中,调试通过后拷贝提交该源码。
注意:不要使用package语句不要使用jdk1.7及以上版本的特性。
注意:主类的名字必须是:Main否则按无效代码处理。

 思路:取小数点后几位数的连续三位数因为数比较大,所以用了大整型BigInteger  把被除数扩大

然后再除以除数,得到的数就是最後小数的前面的数然后取后三位就好了。不过这样写只通过了两组数据

因为后面数据运行超时了。(通过40%的数据)

下面第二段代码根據除法法则优化了一下并且需要考虑到循环小数,解析在注释里(通过100%的数据)

第二段代码来自: 

while(d>0){//当这一位数刚好等于0时,也就是算箌小数点后n位了 if(yu==0){//如果刚好被整除也就是余数为零,跳出输出三个0 }else{//不然就再次求余补零 if(yu%b==a%b){//如果构成了一个循环就求余找后面的

拍照搜题秒出***,一键查看所有搜题记录

拍照搜题秒出***,一键查看所有搜题记录


后的位数可能是有限的,也可能是無限的.如果是有限的,那它就是有限小数.例如13÷5=2.6.如果是无限的,那它为什么就一定是无限循环小数,而不是无限不循环小数呢?这就是这个问题的核心,也是楼主要问的吧?

可以这样思考,你想一想你笔算除法的过程:一个整数m除以一个整数n,余数肯定比除数n小,除不断就在余数后面加个0继续除以n.不管你除多少次,每次除得的余数肯定比n小.而n是个有限的整数,也就是说每次除得的余数只可能是1,2,3,...,n-1中的一个,无穷个余数只能取这有限个值,所以一定会出现重复.一旦有重复的余数出现,就会开始一个新的循环.例如:8除以7,所得的余数分别是1,3,2,6,4,5,1,3,2,6,4,5...

所以,分数8/7实际上就是一个无限循环小数1.142857...

以仩说明了“所有的分数都是无限循环小数或有限小数”,希望能够对您有所帮助!

你对这个回答的评价是

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的***

我要回帖

更多关于 无限小数与有限小数比较 的文章

 

随机推荐