精华内容
下载资源
问答
  • mysql数据库的时候遇到了多种数字的类型,主要int,bigint,smallint和tinyint。其中比较迷惑的是int和smallint的差别。今天就在网上仔细找了找,找到如下内容,留档做个总结:使用整数数据的精确数字数据类型。...

    mysql数据库的时候遇到了多种数字的类型,主要有int,bigint,smallint和tinyint。其中比较迷惑的是int和smallint的差别。今天就在网上仔细找了找,找到如下内容,留档做个总结:

    使用整数数据的精确数字数据类型。

    bigint

    从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。存储大小为 8 个字节。

    P.S. bigint已经有长度了,在mysql建表中的length,只是用于显示的位数

    int

    从 -2^31 (-2,147,483,648) 到 2^31 – 1 (2,147,483,647) 的整型数据(所有数字)。存储大小为 4 个字节。int 的 SQL-92 同义字为 integer。

    smallint

    从 -2^15 (-32,768) 到 2^15 – 1 (32,767) 的整型数据。存储大小为 2 个字节。

    tinyint

    从 0 到 255 的整型数据。存储大小为 1 字节。

    注意:

    int(M) 在 integer 数据类型中,M 表示最大显示宽度。在 int(M) 中,M 的值跟 int(M) 所占多少存储空间并无任何关系。和数字位数也无关系 int(3)、int(4)、int(8) 在磁盘上都是占用 4 btyes 的存储空间。

    展开全文
  • bigint

    千次阅读 2017-05-23 15:17:07
    最近使用MySQL数据库的时候遇到了多种数字的类型,主要int,bigint,smallint和tinyint。其中比较迷惑的是int和smallint的差别。今天就在网上仔细找了找,找到如下内容,留档做个总结:使用整数数据的精确数字数据...

    最近使用MySQL数据库的时候遇到了多种数字的类型,主要有int,bigint,smallint和tinyint。其中比较迷惑的是int和smallint的差别。今天就在网上仔细找了找,找到如下内容,留档做个总结:

    使用整数数据的精确数字数据类型。

    bigint

    从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。存储大小为 8 个字节。

    P.S. bigint已经有长度了,在mysql建表中的length,只是用于显示的位数

    int

    从 -2^31 (-2,147,483,648) 到 2^31 – 1 (2,147,483,647) 的整型数据(所有数字)。存储大小为 4 个字节。int 的 SQL-92 同义字为 integer。

    smallint

    从 -2^15 (-32,768) 到 2^15 – 1 (32,767) 的整型数据。存储大小为 2 个字节。

    tinyint

    从 0 到 255 的整型数据。存储大小为 1 字节。

    注释

    在支持整数值的地方支持 bigint 数据类型。但是,bigint 用于某些特殊的情况,当整数值超过 int 数据类型支持的范围时,就可以采用 bigint。在 SQL Server 中,int 数据类型是主要的整数数据类型。

    在数据类型优先次序表中,bigint 位于 smallmoney 和 int 之间。

    只有当参数表达式是 bigint 数据类型时,函数才返回 bigint。SQL Server 不会自动将其它整数数据类型(tinyint、smallint 和 int)提升为 bigint。

    int(M) 在 integer 数据类型中,M 表示最大显示宽度。在 int(M) 中,M 的值跟 int(M) 所占多少存储空间并无任何关系。和数字位数也无关系 int(3)、int(4)、int(8) 在磁盘上都是占用 4 btyes 的存储空间。

    展开全文
  • BigInt

    千次阅读 2016-09-14 16:20:25
    题目用string模拟int... 因为木using namespace std; 转换到 coff 期间失败 项目属性 — 配置属性 — 清单工具 — 点击输入输出 将右侧出现的嵌入清单的属性值修改为否,点击应用,点击确定 参考程序地址git

    题目

    用string模拟int大数运算,记得网易的一个笔试题最后就是的


    调试错误解决

    1. #include <string>依旧报错string未定义
      因为木有using namespace std;

    2. 转换到 coff 期间失败
      项目属性 — 配置属性 — 清单工具 — 点击输入输出
      将右侧出现的嵌入清单的属性值修改为否,点击应用,点击确定


    参考程序地址

    github-BigInteger


    Code

    成员变量

    private
    string num; // 数值
    bool sign; //符号信息: true:负数 false:正数或者0
    所以需要setNum,setSign和getNum,getSign

    构造函数

    1. BigInteger(); // empty constructor initializes zero
        sign:false num = "0",初始化为0
    2. BigInteger(string s); // "string" constructor
        判断第一位 isdigit(s[0]) ,是,sign=false整数, 调用setNumber(s)
        否,sign =  (s[0] == '-'); 可能为+、-,调用 setNumber( s.substr(1) )从第二位(下标1)开始
    3. BigInteger(string s, bool sin); // "string" constructor
        直接调用 setNumber(s),setSign(sin)
    4. BigInteger(int n); // "int" constructor
        用到了stringstream作为中间,将int为变为string,同样判断是否正负,同2
    

    附1: substr用法:
    substr 方法
    返回一个从指定位置开始,并具有指定长度的子字符串。
    参数 :
    start 必选。所需的子字符串的起始位置。字符串中第一个字符的索引为 0。
    length : 可选项。返回的子字符串中包含的字符数。
    备注
    如果 length 为 0 或负数,将返回一个空字符串。如果没有指定该参数,则子字符串将延续到字符串的结尾。

    附2:int–string

       int n;
       stringstream ss;
        string s;
        ss << n;
        ss >> s;

    成员函数set get

    void BigInteger::setNumber(string s) {
        number = s;
    }
    
    const string& BigInteger::getNumber() { // retrieves the number
        return number;
    }
    
    void BigInteger::setSign(bool s) {
        sign = s;
    }
    
    const bool& BigInteger::getSign() {
        return sign;
    }

    运算符重载

    =,==,!=,>,<,>=,<=,++(前缀,后缀), --(前缀,后缀), +,-,/,%,+=,*=,/+,%=
    这里重载了好多
    不过可以明显从看到代码中 i++和++i的区别了
    重载运算符,已经默认传了this指针


    • ++i
    BigInteger& BigInteger::operator ++() { // prefix
        (*this) = (*this) + 1;
        return (*this);
    }

    • i++
    BigInteger BigInteger::operator ++(int) { // postfix
        BigInteger before = (*this);
    
        (*this) = (*this) + 1;
    
        return before;
    }

    • +
      1. 符号相同,那么设置符号,然后add
      2. 符号不同,比较绝对值,取最大的,然后subtract
      3. 判断是不是0,一面出现‘-0’的情况
    BigInteger BigInteger::operator + (BigInteger b) {
        BigInteger addition;
        if( getSign() == b.getSign() ) { // both +ve or -ve
            addition.setNumber( add(getNumber(), b.getNumber() ) );
            addition.setSign( getSign() );
        } else { // sign different
            if( absolute() > b.absolute() ) {
                addition.setNumber( subtract(getNumber(), b.getNumber() ) );
                addition.setSign( getSign() );
            } else {
                addition.setNumber( subtract(b.getNumber(), getNumber() ) );
                addition.setSign( b.getSign() );
            }
        }
        if(addition.getNumber() == "0") // avoid (-0) problem
            addition.setSign(false);
    
        return addition;
    }
    

    代码中看出来,this指针就是a咯,所以直接可用成员函数了


    • -
      1. 不需要判断符号了,直接变为+
    BigInteger BigInteger::operator - (BigInteger b) {
        b.setSign( ! b.getSign() ); // x - y = x + (-y)
        return (*this) + b;
    }

    • 大于>
      在判断绝对值的时候用到了重载的大于
    bool BigInteger::operator > (BigInteger b) {
        return greater((*this) , b);
    }

    计算函数

    • 绝对值
      直接返回getNum, 有够了一个BigInteger类,传string参数的那个构造函数
    BigInteger BigInteger::absolute() {
        return BigInteger( getNumber() ); // +ve by default
    }
    • 加法
      1. 和的长度:number1和number2中长度最大的赋值就好了,最后若为1,就insert1
      2. number1和number2相差几位,在前面补0number2.insert(0, differenceInLength, '0'); // put zeros from left
      3. for循环从后往前,设置char carry = ‘0’保留进位
      4. for循环中的要有判断i!=0,第一位的进位在外面处理
      5. 处理最高位的进位
      6. 加法运算实现:add[i] = ((carry-'0')+(number1[i]-'0')+(number2[i]-'0')) + '0';
    string BigInteger::add(string number1, string number2) {
        string add = (number1.length() > number2.length()) ?  number1 : number2;
        char carry = '0';
        int differenceInLength = abs( (int) (number1.size() - number2.size()) );
    
        if(number1.size() > number2.size())
            number2.insert(0, differenceInLength, '0'); // put zeros from left
    
        else// if(number1.size() < number2.size())
            number1.insert(0, differenceInLength, '0');
    
        for(int i=number1.size()-1; i>=0; --i) {
            add[i] = ((carry-'0')+(number1[i]-'0')+(number2[i]-'0')) + '0';
    
            if(i != 0) {
                if(add[i] > '9') {
                    add[i] -= 10;
                    carry = '1';
                } else
                    carry = '0';
            }
        }
        if(add[0] > '9') {
            add[0]-= 10;
            add.insert(0,1,'1');
        }
        return add;
    }
    • 减法
    • 差的长度:number1和number2中长度最大的赋值就好了,最后若为1,就insert1
    • number1和number2相差几位,在前面补0number2.insert(0, differenceInLength, '0'); // put zeros from left
    • 减法是要从高位借位(可以不用考虑0吧,反正小的话会借位,会+10)
    • sub[i] = ((number1[i]-'0')-(number2[i]-'0')) + '0';
    • 除去最开始的0,erase,所以只需要最开始位不为0,以及最后长度要>=1
    string BigInteger::subtract(string number1, string number2) {
        string sub = (number1.length()>number2.length())? number1 : number2;
        int differenceInLength = abs( (int)(number1.size() - number2.size()) );
    
        if(number1.size() > number2.size())
            number2.insert(0, differenceInLength, '0');
    
        else
            number1.insert(0, differenceInLength, '0');
    
        for(int i=number1.length()-1; i>=0; --i) {
            if(number1[i] < number2[i]) {
                number1[i] += 10;
                number1[i-1]--;
            }
            sub[i] = ((number1[i]-'0')-(number2[i]-'0')) + '0';
        }
    
        while(sub[0]=='0' && sub.length()!=1) // erase leading zeros
            sub.erase(0,1);
    
        return sub;
    }
    • 大于
      逻辑就是不等于不小于
    bool BigInteger::greater(BigInteger n1, BigInteger n2) {
        return ! equals(n1, n2) && ! less(n1, n2);
    }
    • 等于
      string相等就是的了且符号相等
    bool BigInteger::equals(BigInteger n1, BigInteger n2) {
        return n1.getNumber() == n2.getNumber()
               && n1.getSign() == n2.getSign();
    }
    • 小于
    • 先看符号,不同的话就是正的大
    • 符号相同,都是正,那个长哪个大,否则长度相同,直接比较string
    • 符号相同,都是负,那个长哪个小,否则长度相同,直接比较string
    bool BigInteger::less(BigInteger n1, BigInteger n2) {
        bool sign1 = n1.getSign();
        bool sign2 = n2.getSign();
    
        if(sign1 && ! sign2) // if n1 is -ve and n2 is +ve
            return true;
    
        else if(! sign1 && sign2)
            return false;
    
        else if(! sign1) { // both +ve
            if(n1.getNumber().length() < n2.getNumber().length() )
                return true;
            if(n1.getNumber().length() > n2.getNumber().length() )
                return false;
            return n1.getNumber() < n2.getNumber();
        } else { // both -ve
            if(n1.getNumber().length() > n2.getNumber().length())
                return true;
            if(n1.getNumber().length() < n2.getNumber().length())
                return false;
            return n1.getNumber().compare( n2.getNumber() ) > 0; // greater with -ve sign is LESS
        }
    }
    展开全文
  • mysql:bigint

    千次阅读 2017-09-01 21:55:17
    bigint最大值是9223372036854775807,20
    bigint的最大值是9223372036854775807,20位
    展开全文
  • mysql 14以上长度表示使用bigint

    千次阅读 2011-10-21 14:45:24
    如题,14以上一律使用bigint(20) 而 java中对应使用Long 表示 20以上的使用 varchar 去表示
  • C++大数BigInt

    2020-07-24 16:18:54
    然后没有按板子来写,但是思想基本一致,因为我的板子是每四合并成一,也就是将大数看做一个100001000010000进制数 构造和输出 大数一位位地输入比较慢,因此一般采用字符串输入,然后将字符串转化为大数 注意...
  • I've got some numbers that is now larger than INT can handle.This is a bit embarassing, but I honestly don't know exactly what the BIGINT(8) means. Is the 8 in that the max bit value or the max length...
  • bigint和Decimal

    千次阅读 2019-05-16 15:21:08
    bigint 为Transact-SQL的系统数据类型,当整数值超过int数据范围时才可以使用。为了实现兼容性,int数据类型仍是 Microsoft SQL Server 2005 中的主要整数数据类型。 数据类型 尽管int依然是SQL Server 2000中最主要...
  • C++:大数类BigInt符号)

    千次阅读 2017-11-23 10:02:10
    Description:C++大数类(符号) **************************************************/ # ifndef __BIG_INT_H__ # define __BIG_INT_H__ # include # include # include # include ...
  • JS内置对象BigInt

    千次阅读 2019-11-22 14:40:28
    这原本是 Javascript 中可以用 Number 表示的最大数字。BigInt 可以表示任意大的整数。 为什么需要BigInt? 在JS中,所有的数字都以双精度64浮点格式表示,那这会带来什么问题呢? 这导致JS中的Number无法精确...
  • MySQL的bigint类型

    2017-11-02 17:14:00
    bigint支持的数字的大小范围为:19,存电话号码。符号范围:-9223372036854775808 到 9223372036854775807 int支持的数字范围为:10符号范围:-2147483648 到 2147483647 无符号范围:0-4294967295 ...
  • 整数数据类型bigint

    千次阅读 2020-03-01 00:40:34
    文章目录1.1 bigint说明1.2 测试环境说明1.3 加unsigned属性1.3.1 SQL模式开启严格模式1.3.2 SQL模式未开启严格模式1.4 加zerofill属性1.4.1 SQL模式开启严格模式1.4.2 SQL模式未开启严格模式1.5 不加unsigned和...
  • mysql bigint 取值范围

    万次阅读 2016-04-11 10:16:22
    bigint是8个字节,64,所以N等于64 bigint最多20个字符,也可能是19个字符,这是因为正数时是19个数字,负数时负号,所以一共是20个数字。 同理,可以推断出,mediumint,int,tinyint的取值范围
  • 实现了大数的加法,减法,乘法。 请参看《心希盼说明-bigint
  • 一、BigInt 数据类型 1、BigInt 数据类型的用处 2、BigInt 数据类型的特性 二、BigInt 对象(实例) 1、创建一个BigInt 对象 2、BigInt 实例的方法 (1)、BigInt 对象继承了 Object 对象的两个实例方法 (2...
  • varchar(100)存储多少个汉字,多少个数字具体还是要看版本的 4.0版本以下,varchar(100),指的是100字节,如果存放UTF8汉字时,只能存33个(每个汉字3字节) 5.0版本以上,varchar(100),指的是100字符,无论存放...
  • ES10的新特性 —— bigint

    千次阅读 2019-11-26 16:40:15
    前面的话 虽然es10现在还是草案,但Chrome大多数功能都已经实现。下面介绍新特性:bigint基本数据类型,es6中的基本数据类型包括:null...在javaScript中,number可以准确表达的最大数字是2^53没有比这更大的数字, N...
  • 突然我特好奇,我的id要是超过这个bigint最大程度会是什么样子。 这里说明一下,我的数据库是mysql的,这个id字段设置为bigint auto_increment。 然后我自己找了一下资料。如下: 地址:...
  • js的第七种基本数据类型BigInt

    千次阅读 2019-11-13 21:45:27
    js的第七种基本数据类型BigIntjs的第七种基本数据类型BigInt介绍创建类型判断运算方法BigInt.asIntN()BigInt.asUintN()BigInt和Number不允许隐式类型转换BigInt和String零值无穷和NaN判断兼容TypeScript相关链接 ...
  • JavaScript基本数据类型:BigInt
  • BigInt 是一种内置对象,它提供了一种方法来表示大于 253 - 1的整数。BigInt 可以表示任意大的整数。 如何创建 BigInt ? 可以用在一个整数字面量后面加 n 的方式定义一个 BigInt ,如:120n,或者调用函数BigInt()...
  • JS 最新数据基本类型:BigInt

    千次阅读 2019-07-30 07:36:51
    原文:...BigInt数据类型的目的是比Number数据类型支持的范围更大的整数值。在对大整数执行数学运算时,以任意精度表示整数的能力尤为重要。使...
  • 最近使用MySQL数据库的时候遇到了多种数字的类型,主要int,bigint,smallint和tinyint。其中比较迷惑的是int和smallint的差别。今天就在网上仔细找了找,找到如下内容,留档做个总结: 使用整数数据的精确数字数据...
  • JS基本数据类型 —— BigInt

    千次阅读 2021-01-17 15:51:57
    因为在js中的数字类型是按照IEEE 754-2008标准的定义,所有数字都以双精度64浮点格式表示。因为在IEEE 754标准下浮点数的舍入模式是一下4类: 最近舍入 即向距离最近的浮点数舍入,若存在两个同样接近的数,则...
  • BigInt BigInt目前已经进入Stage 4阶段 下一个版本将会作为新特性出现在ECMAScript,下面我们来一起了解一下BigintBigInt是什么? BigInt是JavaScript中一种可以用来表示任意精度整数的基本数据类型 BigInt可以...
  • bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的... bigint已经长度了,在mysql建表中的length,只是用于显示的位数 int 从 -2^31 (-2,147,483,648) 到 2^31 – 1 (2,14
  • mysql数据库字段bigint使用

    千次阅读 2018-11-23 14:21:00
    Mysql里个数据类型bigint 在java转换成实体对象时,处理不当容易出现以下异常: java.lang.ClassCastException: java.lang.Long cannot be cast to java.math.BigInteger 只需要注意以下情况,就可避免此类异常:...
  • 使用mysql时,integer最大是2147483647(10)。如果想存储更大的数字就要使用BIGINT。比如现在QQ号已经11,很快就12了。 搜索好久一直没找到好的办法,人说要装插件,但我看了一下插件很久没更新了。后来...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,822
精华内容 9,928
关键字:

bigint最大有多少位