要让一个文本框的值自动增1,主要用于发票号的自动跳号,当数小一点时,是没有问题的,但有时数值是10位以上,就会报错了。   
int counts = this.textBox3.Text.Trim().Length;
int fph = Convert.to .ToInt32 (this.textBox3.Text.Trim()) + 1;
this.textBox3.Text = fph.ToString().PadLeft(counts, '0');请教如何改进去适应大整数这种情况
                

解决方案 »

  1.   

    别用int,用long,如果确定这个数字都为正数的话,用ulong,能存0-18,446,744,073,709,551,615的数字
      

  2.   

    int的可存储数值范围是:-2,147,483,648 到 2,147,483,647
    uint的可存储数值范围是:0 到 4,294,967,295
    long的可存储数值范围是:-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807ulong的可存储数值范围是0到18,446,744,073,709,551,615
      

  3.   

    int是存储32位2进制位来表示的数字,范围为-2^32 ~ 2^32-1  其中^为幂运算
    long则是用64位来存储,所以表示的范围要大得多-2^64 ~ 2^64-1
      

  4.   

    Int16代表的是short类型,16的意思是16位,因为每个字节是8位的2进制,16位就表示2个字节Int32表示的是int类型,是四个字节存储数字的Int64就是表示的long,8个字节存储数字而UInt64表示的Ulong,也是8个字节存储数字,但只表示正数,不表示负数,所以会比long类型存储的多一倍
      

  5.   

    Int16代表的是short类型,16的意思是16位,因为每个字节是8位的2进制,16位就表示2个字节Int32表示的是int类型,是四个字节存储数字的Int64就是表示的long,8个字节存储数字而UInt64表示的Ulong,也是8个字节存储数字,但只表示正数,不表示负数,所以会比long类型存储的多一倍
      

  6.   

    大数在计算机里的处理是有特定方法的,要用数组,数组的各项对应大数各位上的数字,例如:byte[] Num={9,8,2,3,9,5,8,3,7,4,5,8,6,8,2,6,7,3,8,5,3,9,4,8,7,8,5,8,3,7,4,5,8,6,8,2,6,7,3,8,5,3,9};表示数:9823958374586826738539487858374586826738539,不论有多大,都可以处理;语言提供的范围能有多大呢。
    当然运算的时候,就要自己设计的算法了,真正大型实用的项目,好多功能都是根据实际情况"当场"设计的,包括数据库,系统提供的东西不一定符合当前实际需求,不一定可靠。再如,与时间有关的"竞争"问题,b/S里,许多客户端同时访问一个库文件,顺序由DBMS处理了,但这种处理效率并不高,有时不可靠