我有一个比特掩码的和,它是(2^63)-1
。但这样做的结果是不准确的。最后3个数字始终为0或替换为e18样式。
简单示例SQL:
SELECT
POW(2,63), /* 9.223372036854776e18 */
CAST(POW(2,63) AS DECIMAL(65)), /* 9223372036854776000 */
(POW(2,63) - 1), /* 9.223372036854776e18 */
CAST((POW(2,63) - 1) AS DECIMAL(65)) /* 9223372036854776000 */
POW()返回一个"双精度"浮点数,它只有53位尾数。您期望的精度为64位。看见http://dev.mysql.com/doc/refman/5.7/en/floating-point-types.html