如何在 Postgres 中创建 uint256 数据类型?看起来它们本机只支持最多 8 个字节的整数..
它们提供具有用户指定精度的小数和数字类型。对于我的应用程序,值是钱,所以我假设我会使用数字而不是十进制,或者这没关系吗?
NUMERIC(precision, scale)
那我会用NUMERIC(78, 0)
吗?(2^256 是 78 位)还是我需要NUMERIC(155, 0)
强制它始终 >= 0(2^512,155 位,额外的位代表符号)?或者我应该使用十进制吗?
如何在 Postgres 中创建 uint256 数据类型?看起来它们本机只支持最多 8 个字节的整数..
它们提供具有用户指定精度的小数和数字类型。对于我的应用程序,值是钱,所以我假设我会使用数字而不是十进制,或者这没关系吗?
NUMERIC(precision, scale)
那我会用NUMERIC(78, 0)
吗?(2^256 是 78 位)还是我需要NUMERIC(155, 0)
强制它始终 >= 0(2^512,155 位,额外的位代表符号)?或者我应该使用十进制吗?
numeric(78,0)
最大值为 9.999... * 10^77 > 2^256 就足够了。
您可以创建一个域。
CREATE DOMAIN uint_256 AS NUMERIC NOT NULL
CHECK (VALUE >= 0 AND VALUE < 2^256)
CHECK (SCALE(VALUE) = 0)
这将创建一个可重用的uint_256
数据类型,该数据类型被限制在2^256
限制范围内,并且还通过仅允许数字的小数位数为 0 来防止舍入错误(即,使用十进制值引发错误)。在 Solidity中没有任何东西NULL
,因此数据类型不应为空。
试试看:dbfiddle