精华内容
下载资源
问答
  • 计算 Math.random 范围公式: (高数-低数+1) + 低数 (包含高数) <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-...
    计算 Math.random 范围公式: (高数-低数+1) + 低数 (包含高数)
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <script>
            /* 计算random 范围公式: (高数-低数+1) + 低数   (包含高数)*/
    
            // 10 到21随机数 21-10 =11
            var num = Math.floor(Math.random() * (21 - 10 + 1) + 10)
            console.log('10 到21: ', num);
    
            // 24 到33 随机数
            var num1 = Math.floor(Math.random() * (33 - 24 + 1) + 24)
            console.log('24 到33: ', num1);
    
            // 18 到40之间的随机数
            var num2 = Math.floor(Math.random() * (40 - 18 + 1) + 18)
            console.log('18 到40: ', num2);
    
            // 109 到199之间的随机数
            var num3 = Math.floor(Math.random() * (199 - 109 + 1) + 109)
            console.log('109 到199: ', num3);
        </script>
    </body>
    
    </html>
    
    展开全文
  • float的精度和取值范围

    万次阅读 多人点赞 2019-06-16 12:11:00
    关于float的精度和取值范围这个问题,我查询了很多次,每次都是用完就忘了,等到再使用的时候还需要再次查询,关键是这个问题大家给出的结果并不都是一致的,我得从众多的资料当中选择出正确的观点,这还要额外花...

    前言

    关于float的精度和取值范围这个问题,我查询了很多次,每次都是用完就忘了,等到再使用的时候还需要再次查询,关键是这个问题大家给出的结果并不都是一致的,我得从众多的资料当中选择出正确的观点,这还要额外花一些时间,所以我决定也总结一次,方便我以后拿来直接用了,如果能给大家带来帮助那就更好了。下面提到一些说法很多都是我个人的理解,如果大家有疑义,欢迎讨论。

    精度限制

    首先考虑下为什么会产生精度问题,是因为存储数据的空间有限,以一个四字节整数int n;为例,一共有32位,取值范围是 [-2147483648‬, 2147483647] ,一共是4,294,967,296种可能,它的精度可以说是小数点后一位都不保留,也就是只有整数,换句话说变量n可以表示实数范围内的4,294,967,296个数值。

    如果换成float类型呢?一个变量float f所能表示多少个数呢?实际上由于存储空间未发生变化,同样是4字节32位,那么float类型也只能表示,或者说精确表示4,294,967,296个数值(真实情况由于一些特殊的规则,最终所表示的数字个数还要少),说到这里很多人可能会疑惑,因为他知道float可以表示比4,294,967,296大的数,同时也能表示小数,如果只有4,294,967,296种可能,那究竟是怎么做到的呢?

    这里也就开始提到精度了,整数很好理解,每个数字的间隔都是1,int类型所表示的4,294,967,296个数字都是等间距的,步长为1。而float也只能表示4,294,967,296个数字,同时要表示比int还大的范围,一个很直观的想法就是把间距拉大,这样范围就大了,但是float还要表示小数,像0.2、0.4这样的数字间距明显要小于1啊,想要存储小数貌似要把间距缩小,这就和前面矛盾了啊。

    实际上float类型存储数据的间隔不是等间距的,而是在0的附近间距小,在远离0的位置间距大,为什么会这样,一会我们看一下float类型数据的存储规则就明白了,这里先来看一下int类型和float类型所表示数字的范围对比,这只是一个示意图。

    //int
               [ *         *         *         0         *         *         * ]
    //float
    [ *          *    *    *   *  *  * * * * * 0 * * * * *  *  *   *    *    *          * ]
    

    上面的示意图就是两者表示数字范围的差异,每个星号*就表示一个数字,float通过这种不等间距的分布,既扩大了范围也表示了小数,那么有没有问题呢?

    当然有问题,饭就这么多,人多了自然不够吃了,因为远离0的位置间距越来越大,当要表示间距中间的一个数字时,只能找它附近离它最近的一个可以表示的数字来代替,这就导致了精度问题,比如我给一个float类型变量分别赋值为 4294967244 和 4294967295 ,再次输出时都变成了 4294967296,因为超过了精度,所以只能找最接近的数字代替。

    float存储方式

    这部分内容基本上各篇文章说的都一致,我也简单描述下,后面根据这部分的定义来推算一下float的精度和取值范围。

    首先我们知道常用科学计数法是将所有的数字转换成(±)a.b x 10c10^c 的形式,其中a的范围是1到9共9个整数,b是小数点后的所有数字,c是10的指数。而计算机中存储的都是二进制数据,所以float存储的数字都要先转化成(±)a.b x 2c2^c,由于二进制中最大的数字就是1,所以表示法可以写成(±)1.b x 2c2^c的形式,float要想存储小数就只需要存储(±),b和c就可以了。

    float的存储正是将4字节32位划分为了3部分来分别存储正负号,小数部分和指数部分的:

    1. Sign(1位):用来表示浮点数是正数还是负数,0表示正数,1表示负数。
    2. Exponent(8位):指数部分。即上文提到数字c,但是这里不是直接存储c,为了同时表示正负指数以及他们的大小顺序,这里实际存储的是c+127。
    3. Mantissa(23位):尾数部分。也就是上文中提到的数字b。

    三部分在内存中的分布如下,用首字母代替类型

    S E E E E E E E E M M M M M M M M M M M M M M M M M M M M M M
    0 1 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1

    float存储示例

    以数字6.5为例,看一下这个数字是怎么存储在float变量中的:

    1. 先来看整数部分,模2求余可以得到二进制表示为110。

    2. 再来看小数部分,乘2取整可以得到二进制表示为.1(如果你不知道怎样求小数的二进制,请主动搜索一下)。

    3. 拼接在一起得到110.1然后写成类似于科学计数法的样子,得到1.101 x 222^2

    4. 从上面的公式中可以知道符号为正,尾数是101,指数是2。

    5. 符号为正,那么第一位填0,指数是2,加上偏移量127等于129,二进制表示为10000001,填到2-9位,剩下的尾数101填到尾数位上即可

    S E E E E E E E E M M M M M M M M M M M M M M M M M M M M M M
    0 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    1. 内存中二进制数01000000 11010000 00000000 00000000表示的就是浮点数6.5

    float范围

    明白了上面的原理就可求float类型的范围了,找到所能表示的最大值,然后将符号为置为1变成负数就是最小值,要想表示的值最大肯定是尾数最大并且指数最大,
    那么可以得到尾数为 0.1111111 11111111 11111111,指数为 11111111,但是指数全为1时有其特殊用途,所以指数最大为 11111110,指数减去127得到127,所以最大的数字就是1.1111111 1111111 11111111 x 21272^{127},这个值为 340282346638528859811704183484516925440,通常表示成 3.4028235E38,那么float的范围就出来了:

    [-3.4028235E38, 3.4028235E38]

    float精度

    float 类型的数据精度取决于尾数,相信大家都知道这一点,但是精度怎么算我也是迷糊了好久,最近在不断尝试的过程中渐渐的明白了,首先是在不考虑指数的情况下23位尾数能表示的范围是[0, 22312^{23}-1],实际上尾数位前面还隐含了一个"1",所以应该是一共24位数字,所能表示的范围是[0, 22412^{24}-1](因为隐含位默认是"1",所以表示的数最小是1不是0,但是先不考虑0,后面会特殊介绍,这里只按一般值计算),看到这里我们知道这24位能表示的最大数字为2242^{24}-1,换算成10进制就是16777215,那么[0, 16777215]都是能精确表示的,因为他们都能写成1.b x 2c2^c的形式,只要配合调整指数c就可以了。

    16777215 这个数字可以写成1.1111111 11111111 1111111 * 2232^{23},所以这个数可以精确表示,然后考虑更大的数16777216,因为正好是2的整数次幂,可以表示1.0000000 00000000 00000000 * 2242^{24},所以这个数也可以精确表示,在考虑更大的数字16777217,这个数字如果写成上面的表示方法应该是 1.0000000 00000000 00000000 1 * 2242^{24},但是这时你会发现,小数点后尾数位已经是24位了,23位的存储空间已经无法精确存储,这时浮点数的精度问题也就是出现了。

    看到这里发现 16777216 貌似是一个边界,超过这个数的数字开始不能精确表示了,那是不是所有大于16777216的数字都不能精确表示了呢?其实不是的,比如数字 33554432 就可以就可以精确表示成1.0000000 00000000 00000000 * 2252^{25},说道这里结合上面提到的float的内存表示方式,我们可以得出大于 16777216 的数字(不超上限),只要可以表示成小于24个2的n次幂相加,并且每个n之间的差值小于24就能够精确表示。换句话来说所有大于 16777216 的合理数字,都是[0, 16777215]范围内的精确数字通过乘以2n2^n得到的,同理所有小于1的正数,也都是 [0, 16777215] 范围内的精确数字通过乘以2n2^n得到的,只不过n取负数就可以了。

    16777216 已经被证实是一个边界,小于这个数的整数都可以精确表示,表示成科学技术法就是1.6777216 * 10710^{7},从这里可以看出一共8位有效数字,由于最高位最大为1不能保证所有情况,所以最少能保证7位有效数字是准确的,这也就是常说float类型数据的精度。

    float小数

    从上面的分析我们已经知道,float可表示超过16777216范围的数字是跳跃的,同时float所能表示的小数也都是跳跃的,这些小数也必须能写成2的n次幂相加才可以,比如0.5、0.25、0.125…以及这些数字的和,像5.2这样的数字使用float类型是没办法精确存储的,5.2的二进制表示为101.0011001100110011001100110011……最后的0011无限循环下去,但是float最多能存储23位尾数,那么计算机存储的5.2应该是101.001100110011001100110,也就是数字 5.19999980926513671875,计算机使用这个最接近5.2的数来表示5.2。关于小数的精度与刚才的分析是一致的,当第8位有效数字发生变化时,float可能已经无法察觉到这种变化了。

    float特殊值

    我们知道float存储浮点数的形式是(±)1.b x 2c2^c,因为尾数位前面一直是个1,所以无论b和c取什么样的值,都无法得到0,所以在float的表示方法中有一些特殊的约定,用来表示0已经其他的情况。

    float的内存表示指数位数有8位,范围是[0, 255],考虑偏移量实际的指数范围是[-127,128],但实际情况下指数位表示一般数字时不允许同时取0或者同时取1,也就是指数位的实际范围是[-126,127],而指数取-127和128时有其特殊含义,具体看下面表格:

    符号位 指数位 尾数位 数值 含义
    0 全为0 全为0 +0 正数0
    1 全为0 全为0 -0 负数0
    0 全为0 任意取值f 0.f21260.f * 2^{-126} 非标准值,尾数前改为0,提高了精度
    1 全为0 任意取值f 0.f2126-0.f * 2^{-126} 非标准值,尾数前改为0,提高了精度
    0 全为1 全为0 +Infinity 正无穷大
    1 全为1 全为0 -Infinity 负无穷大
    0/1 全为1 不全为0 NaN 非数字,用来表示一些特殊情况

    总结

    1. float的精度是保证至少7位有效数字是准确的
    2. float的取值范围[-3.4028235E38, 3.4028235E38],精确范围是[-340282346638528859811704183484516925440, 340282346638528859811704183484516925440]
    3. 一个简单的测试float精度方法,C++代码中将数字赋值给float变量,如果给出警告warning C4305: “=”: 从“int”到“float”截断,则超出了float的精度范围,在我的测试中赋值为16777216及以下整数没有警告,赋值为16777217时给出了警告。
    展开全文
  • 之前一直不清楚数据类型的取值范围是怎么计算的,现在弄懂了,记录一下。 char型示例 signed char类型取值范围计算1 假设一个字符型变量占用一个字节,也就是8个二进制位(bit),由于是signed,所以最高为可以为1...

    之前一直不清楚数据类型的取值范围是怎么计算的,现在弄懂了,记录一下。

    char型示例

    signed char类型取值范围计算1

    假设一个字符型变量占用一个字节,也就是8个二进制位(bit),由于是signed,所以最高为可以为1(负数)或0(正数)。

    • 当最高位为1时,能表示的范围是【1000 0000】-【1111 1111】。然后按照二进制转十进制的规则计算,二进制“1000 0000”将8bit全部取反,变成“0111 1111”,再加上1变成“1000 0000”,此时按照无符号数来计算,其十进制为128,加上负号变为-128。“1111 1111”根据相同规则转换为十进制数-1。其取值范围为【-128,-1】。
    • 当最高位为0时,能表示的范围是【0000 0000】-【0111 1111】。二进制“0000 0000”的十进制为0,“0111 1111”的十进制为“\(2^{6}\)+\(2^{5}\)+\(2^{4}\)+\(2^{3}\)+\(2^{2}\)+\(2^{1}\)+\(2^{0}\) = 127,因此符号位为0时,其取值范围为【0,127】。

    结合两种情况,整个signed char类型的取值范围为【-128,127】。

    unsigned char类型取值范围计算

    unsigned是无符号的,所以它能表示的范围是【0000 0000】-【1111 1111】,将范围转化为十进制数为【0,255】。

    其他类型

    其他类型以此类推。

    Reference



    1. https://zhuanlan.zhihu.com/p/25755257

    转载于:https://www.cnblogs.com/huerxiong/p/10488501.html

    展开全文
  • int的取值范围

    万次阅读 多人点赞 2019-08-05 21:19:38
    在学C++或者Java的时候应该都会先了解各种基本数据类型的初值和它们的取值范围,有些人可能会不太重视这块内容,其实很重要,很多大公司面试的过程中都会问到int的取值范围,溢出之后会怎么样等问题。 正文 首先来...

    引言

    在学C++或者Java的时候应该都会先了解各种基本数据类型的初值和它们的取值范围,有些人可能会不太重视这块内容,其实很重要,很多大公司面试的过程中都会问到int的取值范围,溢出之后会怎么样等问题。

    正文

    • 首先来看下在C++和Java中一些基本的数据类型

    在c++中的三类基本数据类型
    C++
    在java中的四类基本数据类型
    java

    上图可以看到c++和java之间的基本数据类型的区别,java多了一类布尔类型的数据。然后主要来看下int的取值范围,int这个数据类型在c++和java中都存在。
    大家都知道int的取值范围是-2^31 - 2^31-1 ,也就是-2147483648 - 2147483647 ,那么为什么会这样取值呢?
    在计算机当中数据都是以01二进制形式存储的,而整型变量int占的是4个字节,一个字节8位,也就是32位,所以一个整型变量在计算机当中其实可以用32位的二进制来表示。
    比如1这个整型变量,用二进制可以表示为(int是带符号的整型变量,所以以下第一位代表符号位,)
    0000 0000 | 0000 0000 | 0000 0000 | 0000 0001 这就是正数1的原码(每8位为一个字节所以正好占4个字节) 注:正整数用原码表示,负整数用补码表示。
    所以正整数在内存中的32位最大可以表示为
    0111 1111 | 1111 1111 | 1111 1111 | 1111 1111 也就是2^31-1=2147483647 因为是正整数,所以第一位符号位是0;从1开始所以要减去全0这种情况。

    同理-1这个负的整型变量在内存中用二进制可以表示为
    1000 0000 | 0000 0000 | 0000 0000 | 0000 0001 这就是负数-1的原码,但是负整数在计算机中是用补码表示的,所以要把这个原码转化成补码,补码就是原码除符号位之外取反后加1。
    1111 1111 | 1111 1111 | 1111 1111 | 1111 1110 这就是-1的反码,再对反码加1
    1111 1111 | 1111 1111 | 1111 1111 | 1111 1111 这就是负数-1的补码了
    那么负整数在内存中的32位最大可以表示为
    1111 1111 | 1111 1111 | 1111 1111 | 1111 1111 这个是最大负整数的原码了,也就是-(2^31-1)=-2147483647那么为什么范围是-2147483648开始呢???
    1000 0000 | 0000 0000 | 0000 0000 | 0000 0001 这个是最大负整数对应的补码了,那么还有一种情况没有包含进去,就是当补码是全0的情况,也就是-0这种情况,在二进制中0可以表示为-0和+0这两种情况,但是0只有一个,所以取-0这种情况,
    当这个最小负整数的补码除符号位外全是0的时候,就是-0的原码了,所以-0是最小的那个数,也就是-2147483648,但其实这个数在内存中并不存在原码,这个补码也不是真正的补码,真正的补码是
    1 1000 0000 | 0000 0000 | 0000 0000 | 0000 0000 已经溢出了
    那么我们再来考虑下如果取的int的值超过这个范围会怎么样,我们用一个程序来验证下

    #include<iostream> 
    using namespace std;
    int main()
    {
    	int i=2147483647;
    	int j=2147483648;
    	int k=2147483649;
    	cout<<i<<endl;
    	cout<<j<<endl;
    	cout<<k<<endl;
    	return 0;
    }
    

    输出结果

    int result
    从上图输出结果来看,可以看到一个很有趣的结果,就是正整数超出2147483647范围后出现了循环取值的现象,也就是2147483648溢出后回到了最小负整数-2147483648,2147483649溢出后变成了-2147483648+1=-2147483647,依次类推。
    所以2147483649可以表示为-2147483648+1,1000 0000 | 0000 0000 | 0000 0000 | 0000 0000 + 0000 0000 | 0000 0000 | 0000 0000 | 0000 0001 = 1000 0000 | 0000 0000 | 0000 0000 | 0000 0001
    所以int整型溢出后可以用这样的方式类推。

    展开全文
  • java中的整型有byte、short、int、long,它们的取值范围分别为: byte:−27-2^{7}−27~+27−1+2^{7} -1+27−1,占1个字节。 short: −215-2^{15}−215~+215−1+2^{15} -1+215−1,占2个字节。 int: −231-2^{31}−...
  • 1、先给出实型变量取值范围 实型变量可以分为单精度(float)(4字节)、双精度(double)(8字节)、长双精度(long double)(8字节)三种类型。 在 VC6.0 double和long double型具有完全相同的长度和存储格式,...
  • 在C语言程序中,给定一个类型,如何计算这个类型变量的取值范围呢?比如有一个字符型变量定义如下: signed char c; 这个字符变量c的取值范围是【-128,127】,是计算出来的呢? 假设字符型变量占用一个字节,也...
  • 数据类型的取值范围计算

    千次阅读 2017-11-05 20:14:38
    在c++中,我们都知道各个数据类型的值都有各自所能表达的范围,举个例子来说吧,我们以整型变量int为例说明怎样去计算数据类型的取值范围:整型变量int为例说明怎样去计算数据类型的取值范围: 我们假设int在vc++...
  • 计算 signed short 的取值范围

    千次阅读 2016-02-15 12:52:51
    #include #define BYTEDIGITS 8 //内存中每个字节...//计算 signed short 类型取值范围 int bateValue=sizeof(signed short); //获取 signed short 在计算机内存中所占用的字节 int sumBate=BYTEDIGITS*bateValue;
  • Java整数类型取值范围计算 以下以3位做为示例。 1,如果不考虑负数。3位表示的最高值为111,转为10进制为7,加上0,总共可表示8位数字。 2,如果考虑负数,则需要有一位来表示符号位。计算机规定最高位为符号位,0...
  • 在本文中,我们以短整型为例,给大家介绍该类型的取值范围计算方式,以及原理。 首先默认情况下,unsigned int 占用2个字节(跟具体的编译器和操作系统有关),也就是16位。 在计算机存储的数据中,都是用0和1...
  • 计算数据类型的取值范围

    千次阅读 2012-10-16 15:19:59
    在c++中,我们都知道各个数据类型的值都有各自所能表达的范围,举个例子来说吧,我们以整型变量int为例说明怎样去计算数据类型的取值范围: 我们假设int在vc++开发环境中占用两个字节的单元,这只是为了简化过程的...
  • 关于sinX与y的大小比较取值范围计算

    千次阅读 2016-11-08 11:22:05
    关于sinX与y的大小比较取值范围计算@(概率论)在求分布函数的时候,常常有已知XX的分布函数求Y=g(X)Y=g(X)的分布函数类型。往往不小心就会计算出错误的范围,从而导致分布函数求错。比如:X∈[0,π]X \in [0,\pi]则...
  • 【基础】int在计算机中的取值范围

    千次阅读 2018-07-24 17:43:59
    要想判断int类型的取值范围,首先要知道:  1.int类型所占字节数;  2.整型变量数据在内存中以什么方式存储; 获得int型所占字节数 #include&lt;stdio.h&gt; int main() { printf(...
  • 简单的说,计算机就是晶体管、电路板组装起来对的电子设备,无论是图形图像的渲染、网络远程共享,还是大数据计算,归根结底都是 0 与 1 的信号处理。信息存储和逻辑计算的元数据,只能是 0 与 1,但是它们在不同...
  • java中的int的取值范围如何计算?

    千次阅读 2019-05-28 17:45:06
    1、java中int的取值范围为-2147483648到+-2147483648。 2、首先jdk中定义int占4个字节32位,32位就是jvm仅仅给分配32个格子的空间,用以存放数据。 3、计算机中用0和1存放数据。那么,32个格子中放满0或1的方法,...
  • 但是其中并没有 long long 类型的取值范围。在 C++ 的库 climits 中定义了常量 LLONG_MIN, LLONG_MAX, ULLONG_MAX,但是这并不在 C 语言的范畴中。我们希望有一种方法,可以得到 C 语言中任意整型数据的取值范围。 ...
  • int的取值范围

    千次阅读 2018-09-12 13:56:12
    int的取值范围: -2^31~2^31-1   计算机中32位int类型变量的范围,其中int类型是带符号整数。 正数在计算机中表示为原码,最高位为符号位: 1的原码为0000 0000 0000 0000 0000 0000 0000 0001 2147483647的...
  • 信息熵的取值范围计算证明过程

    千次阅读 2019-10-03 14:15:24
    最大值(方法1,拉格朗日函数): 最大值(方法2,从二分开始计算导数): 最小值
  • java中int取值范围是怎么计算的?

    千次阅读 2018-04-09 22:54:13
    32位(后面全部的计算都是以此为根据的)32位就是jvm仅仅给分配32个格子的空间,用以存放数据。总所周知计算机中用0和1存放数据。那么,32个格子中放满0或1的方法 有2的32次方种:所以。这32个格子中。或者说32位的...
  • 一、以c++为例 1、int (整数类型) 4个字节 ...计算:每个位置只能是0,1这两个数字中的任意一个,有两种情况 31个2相乘:2的31次方 范围:-2^31~2^31-1  其他数据类型依次类推。。。  ...
  • MYSQL中TINYINT的取值范围

    万次阅读 2019-03-10 17:16:58
    在MySQL的数据类型中,Tinyint的取值范围是:带符号的范围是-128到127。无符号的范围是0到255(见官方《MySQL 5.1参考手册》http://dev.mysql.com/doc/refman/5.1/zh/column-types.html#numeri...
  • C语言中16位整型数据的取值范围

    万次阅读 2019-08-21 17:16:37
    本文介绍C语言中16位整型数据的取值范围。 1. 无符号16位整型数据 对于无符号(unsigned)型数据,存储单元中全部二进位(bit)都用作存放数本身,而不包括符号。所以对于16位整型,取值范围如下: 0000 0000 ...
  • 为什么Java的int取值范围是==-2^31~ 2^31 -1== (-2147483648 ~ 2147483647) 而不是-2147483647 ~ 2147483647 ? 为什么C的int取值范围是**-2^15 ~ 2^15 -1** (-32768 ~ 32767) 而不是-32767 ~ 32767 ? 以Java为例,...
  • byte的取值范围

    千次阅读 2015-03-26 22:51:59
    取值范围就是那么多,10进制就是0~255。   如果更长的类型如int转成更短的类型,那么只保留短类型那么多长度的数据。 假设类型A为9位,其某变量值为 0 1111 1111 ,10进制为255,转成byte正好也是255 ...
  • 通常,我们不仅想知道一组数据的...ptp函数可以计算数组的取值范围,即该函数返回的是数组元素的最大值和最小值直接的差值(max(array) - min(array))。  最大值/最小值和取值范围实例: from numpy import * ...
  • 语言背景Java其他也一样,计算机原理实现都是一样的,只不过其中举例子是Java。 前言:  1. 带符号位就是最前面的一位是符号位... 4)负数被保存成补码大概就是因为计算的时候可以直接使用 加法器 吧! 补个图安心:

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 200,693
精华内容 80,277
关键字:

怎么计算取值范围