精华内容
下载资源
问答
  • 福建省南平市浦城县七年级数学下册6.1平方根6.1.2无限不循环小数比较大小导学案无答案新版新人教版
  • 循环小数

    2011-08-16 11:08:00
    循环小数:一个数的小数部分,如果从某一位起,一个或几个数字依次不断地重复出现,这样的数就叫做循环小数循环小数是无限小数,它的位数是无限的。循环小数的小数部分中,依次不断重复的数字,叫做它的一个循环节...

    1.1.2循环小数

    1.1.2.1基本概念及定理

    循环小数:一个数的小数部分,如果从某一位起,一个或几个数字依次不断地重复出现,这样的数就叫做循环小数。循环小数是无限小数,它的位数是无限的。循环小数的小数部分中,依次不断重复的数字,叫做它的一个循环节。如果循环节从小数部分第一位(十分位)开始的,叫做纯循环小数;循环节不是从小数部分第一位开始的,叫做混循环小数。

    定理一:如果最简分数的分母除2、5质因数外,不含其它质因数,这个分数能化成有限小数。将能化成有限小数的最简分数的分母进行质因数分解,看质因数2和5的幂指数,较大的那个指数的大小就是有限小数的位数。

    定理二:如果最简分数的分母除2、5质因数外,含其它质因数,这个分数不能化成有限小数。

    定理三:如果一个最简分数的分母里,如果只含有2,5以外的质因数,那么这个分数一定能化成纯循环小数,这个纯循环小数循环节的最少位数,等于9999999999……诸数中能被分母整除的最小那个数里9的个数。

    定理四:一个最简分数的分母里,如果除含有2或5质因数外,还含有其它质因数,那么这个分数一定能化成混循环小数。这个不纯循环部分里的数字的个数,等于25中较多的一个数的个数。循环节的最少位数等于9、999999999……诸数中能被分母25以外的质因数(或质因数的乘积)整除的最小那个数里9的个数。

    1.1.2.2循环小数化分数

    1.1.2.2.1纯循环小数化分数

    从小数点后面第一位就循环的小数叫做纯循环小数。

    纯循环小数的小数部分可以化成分数,这个分数的分子是一个循环节表示的数,分母各位上的数都是9。9的个数与循环节的位数相同。能约分的要约分。

    1.1.2.2.2混循环小数化分数

    不是从小数点后第一位就循环的小数叫混循环小数。

    一个混循环小数的小数部分可以化成分数,这个分数的分子是不循环部分和一个循环节的数字组成的数减去不循环部分的数字组成的数所得的差,分母就是按一个循环节的位数写几个9,再在后面按不循环部分的位数添写几个0组成的数.

    详细内容:http://wenku.baidu.com/view/53a96582d4d8d15abe234eab.html

    展开全文
  • 判断分数是否为无限循环小数

    万次阅读 2018-06-12 22:42:12
    之前做编程题,有一个部分需要判断一个分数是否为无限循环小数,挺有意思,特此整理记录如下: 问题描述(大概意思是) 已知分子a和分母b ,判断 分数a/b是否为无限循环小数 1.已知结论 将分数化为最简...

    0.前言

    之前做编程题,有一个部分需要判断一个分数是否为无限循环小数,挺有意思,特此整理记录如下:

    问题描述(大概意思是)
    已知分子a和分母b ,判断 分数a/b是否为无限循环小数

    1.已知结论

    将分数化为最简分数后,分母的全部因数(除去1和其自身)没有为2或5以外的数,则该分数就不是无限循环小数;否则为无限循环小数。

    首先我们看 1/n的实际含义:将 1 分成n份,每一份的大小

    那么10/n的实际含义:将 10 分成n份,每一份的大小

    对于将 10 分成n份这个话题,如果假设每份必须为整数,那么n的取值(去掉1或者10),只能是2或5

    最简分数是否为无限循环小数,与分子没有关系。

    2.问题解决

    2.1求分子分母的最大公约数

    此处可用辗转相除法求最大公约数

    2.2 判断最简分数的分母的因子

    此处可直接将分母分别整除以多次2和5即可

    3.代码实现

    import java.util.Scanner;
    /**
     * @Title:InfiniteLoop.java
     * @author Stone6762
     * @CreationTime 2018年6月12日 下午10:18:39
     * @Description: 判断一个分数是否为无限循环小数
     */
    public class InfiniteLoop {
    
        /**
         * @Title greatestCommonDivisor
         * @Describe求最大公约数
         * @param a
         * @param b
         * @return
         */
        public static long greatestCommonDivisor(long a, long b) {
            long c = 0;
            while (true) {// 循环的辗转相除法
                c = a % b;
                a = b;
                b = c;
                if (b == 0) {
                    return a;
                }
            }
        }
    
        /**
         * @Title isLoop
         * @Describe a/b是否为无限循环小数
         * @param a分子
         * @param b分母
         * @return
         */
        public static boolean isLoop(long a, long b) {
            // 1.化简,分子分母同时除以最大公约数
            long commonDivisor = greatestCommonDivisor(a, b);
            b = b / commonDivisor;
            // 2.判断分母是否为2的次幂,5的次幂,或者2 5结合
            // 首先让其除以2的次幂
            while (b % 2 == 0) {
                b /= 2;
            }
            // 然后让其除以5的次幂
            while (b % 5 == 0) {
                b /= 5;
            }
            // 最后判断是否为1,如果为1 说明没有 2或者5或者2和5结合构成 以外的因子
            if (b == 1) {
                return false;
            } else {
                return true;
            }
        }
    
        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);
            while (scan.hasNext()) {
                int a = scan.nextInt();
                int b = scan.nextInt();
                System.out.println( a+"/"+b+"的结果是否为无限循环小数:   " + isLoop(a, b));
            }
        }
    }

    展开全文
  • 思路:分数不能表示无限不循环小数。建立3个数组,一个放商,一个放余数,一个对应下角标的数若是余数则元素为1,即记录余数存在。循环除数加一次,若余数为0,则循环节长度为1,若当前得到的余数已经存在,则有循环...

    输入整数a和b(0<=a<=3000,1<=b<=3000),输出a/b的循环小数表示以及循环节长度。例如a=5,b=43,小数表示为

    0.(116279069767441860465),循环节长度为21;  

    思路:分数不能表示无限不循环小数。建立3个数组,一个放商,一个放余数,一个对应下角标的数若是余数则元素为1,即记录余数存在。循环除数加一次,若余数为0,则循环节长度为1,若当前得到的余数已经存在,则有循环节,求出2个相同余数的距离即为循环节长度。

      这个主要是怎么寻找循环节,在除法计算的过程中如何判断一个循环节已经出现了。循环节第二次出现意味着计算过程中的余数已经第二次出现。其实自己在草纸上写一个比如5/7就能发现。当商5的时候(5是循环节的最后一位)余数是5,这和第一次商0的时候(0是循环节前一位)余数也是五。然后用索引存储是否这个余数已经出现过,还有一个数组记录余数对应的商的位置。余数的范围是1~m-1,所以循环节最长是m-1,所以查询数组的大小根据m的值来设定


    1. #include <iostream>  
    2. #include <cstdlib>  
    3. #include <cstring>  
    4. #include <cstdio>  
    5.   
    6. using namespace std;  
    7.   
    8. int r[3003],u[3003],s[3003];  
    9.   
    10. int main()  
    11. {  
    12.     int n,m,t;  
    13.     while (cin >> n >> m) {  
    14.         t = n;  
    15.         memset(r, 0, sizeof(r));  
    16.         memset(u, 0, sizeof(u));  
    17.         int count = 0;  
    18.         r[count ++] = n/m;  
    19.         n = n%m;  
    20.         while (!u[n] && n) {  
    21.             u[n] = count;  
    22.             s[count] = n;  
    23.             r[count ++] = 10*n/m;  
    24.             n = 10*n%m;  
    25.         }  
    26.         printf("%d/%d = %d",t,m,r[0]);  
    27.         printf(".");  
    28.         for (int i = 1 ; i < count && i <= 50 ; ++ i) {  
    29.             if (n && s[i] == n) printf("(");  
    30.             printf("%d",r[i]);  
    31.         }  
    32.         if (!n) printf("(0");  
    33.         if (count > 50) printf("...");  
    34.         printf(")\n");  
    35.         printf("   %d = number of digits in repeating cycle\n\n",!n?1:count-u[n]);  
    36.     }  
    37.     return 0;  
    38. }  

    展开全文
  • 循环小数的处理

    千次阅读 2008-09-02 01:44:00
    关于循环小数的处理问题描述: Write a program that will accept a fraction of the form N/D, whereN is the numerator and D is the denominator and print the decimalrepresentation. If the decimal ...
     关于循环小数的处理

    问题描述:
        Write a program that will accept a fraction of the form N/D, where N is the numerator and D is the denominator and print the decimal representation. If the decimal representation has a repeating sequence of digits, indicate the sequence by enclosing it in brackets. For example, 1/3 = .33333333...is denoted as 0.(3), and 41/333 = 0.123123123...is denoted as 0.(123). Use xxx.0 to denote an integer. Typical conversions are:

    1/3 = 0.(3)   //将循环部分用( )扩起来。
    22/5 = 4.4
    1/7 = 0.(142857)
    2/2 = 1.0
    3/8 = 0.375
    45/56 = 0.803(571428)
    Input :
       A single line with two space separated integers,N and D,1<=N,D<=100000.

    Output :
       The decimal expansion, as detailed above. If the expansion exceeds 76 characters in length, print it on multiple lines with 76 characters per line.
    例子:
    输入:45 56
    输出:0.803(571428)

    程序代码:

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. #include <windows.h>

    4. #define LEN 100               //最大小数位数
    5. typedef struct _div
    6. {
    7.     long int num;              //分子
    8.     long int den;              //分母
    9.     long int quot[LEN];        //商
    10.     long int resi[LEN];        //余数
    11.     unsigned long int cycle_point;    //循环点
    12.     unsigned long int length;         //商的个数
    13. }DIV;

    14. void divide(DIV &tmp)
    15. {
    16.       unsigned int len=0, i=0;
    17.       ldiv_t result;
    18.       if(!tmp.den)
    19.       {
    20.           printf("Denominator Error!/n");
    21.           exit(1);
    22.       }
    23.       while(len<LEN)
    24.       {
    25.           result=ldiv(tmp.num ,tmp.den);
    26.           tmp.quot[len]=result.quot;
    27.           tmp.length+=1;
    28.           if(result.rem!=0)
    29.           {
    30.               tmp.resi[len]=result.rem ;
    31.               tmp.num=result.rem*10;
    32.               while(i!=len)
    33.               {
    34.                   if(tmp.resi[i]==result.rem)
    35.                   {
    36.                       tmp.cycle_point=i;
    37.                       return ;
    38.                    }
    39.                    i++;
    40.               }
    41.            }
    42.            else
    43.                 return ;
    44.            len++;
    45.            i=0;        
    46.       }
    47. }

    48. int main()
    49. {
    50.     DIV oper;
    51.     unsigned int i=0, len=0 ,repair=0, flag=0;
    52.     oper.length=0;
    53.     printf(" 请输入分子(nume):");
    54.     scanf("%ld",&oper.num);
    55.     printf(" 请输入分母(demo):");
    56.     scanf("%ld",&oper.den);
    57.     divide(oper);
    58.     printf("%ld%c",oper.quot[i++],'.');
    59.     if(oper.length==1)
    60.         printf("%d",0);
    61.     else 
    62.     {
    63.         while(i<oper.length)
    64.         {
    65.             if(i==oper.cycle_point+1)
    66.             {
    67.                 printf("%c%ld",'(',oper.quot[i]);
    68.                 flag=1;
    69.             }
    70.             else
    71.                 printf("%ld",oper.quot[i]);
    72.             i++;
    73.         }
    74.         if(flag)
    75.             printf("%c",')');
    76.     }
    77.     printf("/n");
    78.     return 0;
    79. }


    展开全文
  • 循环小数(Repeating Decimals)

    千次阅读 2015-02-09 21:45:39
    输入整数a和b(0, 1),输出a/b的循环小数表示以及循环节长度。例如a=15,b=43,小数表示为0.(116279069767441860465),循环节长度为21。 【分析】  当整数相除的运算过程中再次出现了同一个余数,说明循环节...
  •  此题的关键是怎么判断商循环小数以及得到其循环部分。其实就是一个很简单的数学知识,如果两数相除,出现了两次相同的余数,则循环发生。 C#代码如下,其原理就是余数乘10再除以除数,若出现两次相同的余数,则可...
  • 0.0001 1001 1001 1001…(无限循环),因为数据的不同,有些数据在转换成二进制后会无限循环,但计算机是不允许无限循环的,对于无限循环小数,计算机会进行舍入处理。进行双精度浮点数的小数部分最多支持 52 位...
  • 浮点数比较大小,由于精度问题,所以直接比较有时可能会出错。 单精度数7位有效数字。 (float)双精度数16位有效数字。(double) 单精度数的尾数用23位存储,加上默认的小数点前的1位1,2^(23+1) = 16777216。...
  • 先来看一些例:(无法在3上记点,故在3前后以一“~”号代替,表示其从“~”号处开始无限循环)7/3=2.~3333~ 10/3=3.~33333~ 31/3=10.~3~ 127/3=42.~3~ 。。。。。好了,如何求出符合这样要求的正整数呢?我们...
  • 小数循环

    2014-11-02 16:44:06
    小数循环节:
  • float类型数据不能直接比大小,需要做一些处理才行,这是由计算机采用二进制的方式存储数据导致的。 十进制整数转二进制: 十进制数除2,取余,从最后一个余数到第一个余数得到的数,即为转换后得到的二进制值。 ...
  • ———-比较四个数的大小,并最后显示最大数和最小数 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 练习1//比较四个数的...
  • 因为 double 的小数位数是有限的,如果 log( x) ,log (y) 是无限循环小数,,那么精度丢失的 很厉害,所以涉及到可能有无限循环的小数比较大小的时候,1、不要用第三变量去赋值,直接比较就行...
  • 从未开化到文明 数的黎明 一一对应 分割而不变 数的语言 数词的发展 ...循环小数和分数 非循环小数 加减和乘除 数学与现实世界 正和负 新数的名称 负的符号 正和负的加法 减法运算 ...
  • 小数化分数 模拟题

    千次阅读 2018-09-26 22:11:39
    小数化分数 Problem Description 将给出的小数化为分数 Input 只有一行,为要转换的小数(正负均有)。...混循环小数的例子:0.5(142857)(输出18/35) 输入数据都是正确的,不用判错。保证如果有循环节...
  • 将一个小数化成一个最简分数的模板,小数包含简单小数和循环小数。 对于循环小数的输入我们将循环体用括号括起来表示。 思路 首先我们将小数部分的数化为分数;对于整数部分我们只需要将化好的分子加上整数乘分母...
  • 1717 小数化分数2

    2016-08-15 14:59:14
    ①普通有限小数②纯循环小数③混循环小数转化方法:①这一类很简单,分子就是小数点后面的数,分母就是10的n次方(n为小数点后面位数)②分子是循环的数,分母就是和它位数相同的9,比如0.(14),那么就是14/99③这个...
  • 互换最大最小数

    千次阅读 2012-09-17 10:23:37
    (ps:天天老是做项目写代码了,考试考的这糟糕啊,平均竟然刚到80分,是个同学就我分数高,淡淡的忧伤,算了,不鸟了) 题目描述: 输入一个数n,然后输入n个数值各不相同,调换数组中最大和最小的两个...
  • C小数转换分数的函数

    2009-03-28 18:38:41
    小数转换为分数的C++代码,能将十进制的小数转化为分子与分母都是整数的分数,换句话说,这个...如果我们的最终目标是无理数(无限不循环小数),这个算法将一直继续,增加分子和分母,直到最终结果在指定的精度上。
  • 循环节长度

    2017-03-29 22:40:56
    循环节长度两个整数做除法,有时会产生循环小数,其循环部分称为:循环节。 比如,11/13=6=>0.846153846153….. 其循环节为[846153] 共有6位。 下面的方法,可以求出循环节的长度。 */ import java.util.Vector;...
  • 二进制小数的意义

    2020-10-28 23:40:50
    小数末尾加上0或去掉0,小数大小不变,但是小数的意义会改变。 1.5的意义是,但1.50的意义是。 同理,二进制小数也可以这样来分析: … 十六位 八位 四位 二位 个位 . 二分位 四分位 八分位 十六分位 二进制...
  • python中运算过程中小数精度的控制

    万次阅读 2017-02-08 22:06:04
    用python进行运算时,如果会出现浮点数,有时候会需要对小数精度进行控制,主要方法有以下几种:1、round()round()是python的内置方法, round()如果只有一个数作为参数,不指定位数的时候,返回的是一个整数,...
  • /// 转换人民币大小金额 /// /// 金额 /// 返回大写形式 public static string CmycurD(decimal num) { string str1 = "零壹贰叁肆伍陆柒捌玖"; //0-9所对应的汉字 string str2 = "万仟佰拾亿仟佰拾万仟佰拾元...
  • 本题主要是计算的1 / x小数循环节的长度是多少 分数化小数其实也挺简单的 对于一个分母为x的分数 那么他的小数循环节长度最多为x- 1  这也是我打表得出的规律 所以数组的大小需要注意了 这个题中x ...
  • C语言将分数转为小数

    2020-10-10 18:32:47
    //括号内的循环部分为0,只考虑整数部分和有限小数部分 if (0 == cir) { /* eg: 278.45(0) 整数部分 278 有限小数部分 45 化为分数的步骤将278.45视为278.45/1, 分子分母同时乘以 (10 的 n次), n是小数点...
  • 真正快速的小数组排序算法。 查看代码中的其他排序算法,例如 EcoSelection 排序,以更好地理解这一算法。 :) 这个想法是打开关于循环内选项的思想。 为什么一次只使用数组的 1 个值? 为什么不比较多个? 我希望这...
  • 调整dubbo线程池的大小 我们的线程池应该有多大? 不久前,一个朋友在Skype上对我执行ping操作,问我一些关于在64路机器上运行的JVM集群的问题,该机器每天启动30个奇数线程。 在运行300,000多个线程的情况下,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 47,378
精华内容 18,951
关键字:

循环小数的比大小