20位数的数字转换

时间:2014-04-09 15:23:29

标签: c#

大家好我有一个20个字符的数字,如下34432523434234423434,我尝试使用long,UInt64进行转换,但我仍然得到例外Value was either too large or too small所以有人可以帮助我我怎样才能转换这个值

2 个答案:

答案 0 :(得分:1)

你的值实际上是65位长,所以如果改变它的类型无关紧要,它将不适合64位变量。

2**64      = 18446744073709551616
your value = 34432523434234423434

答案 1 :(得分:0)

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

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

如果你想要一个大于最大的64位无符号整数18,446,744,073,709,551,615的数字,那么你需要将它存储为一个字符串(或其他文本字段),并希望你不需要做很多数学操作它

或者,您可以查看范围较大但精度较低的浮点数,或十进制数,它们应该能够为您提供65位的整数值,并以十进制(65,0)作为列类型。