大家好我有一个20个字符的数字,如下34432523434234423434
,我尝试使用long,UInt64
进行转换,但我仍然得到例外Value was either too large or too small
所以有人可以帮助我我怎样才能转换这个值
答案 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)作为列类型。