C# 20位数字转换

C# 20位数字转换,c#,C#,大家好,我有一个20个字符的数字,如下所示3443252343434234423434,我尝试了使用long,UInt64进行转换,但仍然得到一个异常值太大或太小,所以有人能帮我解决如何转换这个值的问题吗您的值实际上是65位长,因此,无论您如何更改它的类型,它都不适合64位变量 2**64 = 18446744073709551616 your value = 34432523434234423434 大整数实际上并不限于20位,而是限于可以用64位表示的数字(例如,数字999999

大家好,我有一个20个字符的数字,如下所示
3443252343434234423434
,我尝试了使用
long,UInt64
进行转换,但仍然得到一个异常
值太大或太小
,所以有人能帮我解决如何转换这个值的问题吗您的值实际上是65位长,因此,无论您如何更改它的类型,它都不适合64位变量

2**64      = 18446744073709551616
your value = 34432523434234423434

大整数实际上并不限于20位,而是限于可以用64位表示的数字(例如,数字99999999999999999不是有效的大整数,尽管它有20位长)

您有此限制的原因是底层硬件可以相对快速地操作本机格式整数,而数字的文本版本(往往)需要一次处理一位数字

如果您想要的数字大于最大的64位无符号整数18446744073709551615,则需要将其存储为字符串(或其他文本字段),并且希望不需要对其进行太多数学操作


或者,您可以查看范围较大但精度较低的浮点数,或者可以为整数值提供65位数字的十进制数,列类型为decimal(65,0)。

尝试
decimal.Parse
decimal
数据类型适合您的需要。将其转换为大整数
biginger i=new biginger();i=biginger.Parse(“34432523434234423434”)C#中没有varchar。一般来说,除了varchar之外,这是一个很好的答案。还有,为什么要字符串化一个可以存储在十进制中的值呢?我尝试如下使用biginteger,但仍然无法实现
biginteger assignedFromLong=(biginteger)34432523434234423434