SQL不准确的数字

Ale*_*anz 2 mysql sql

我有一些比特掩码(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 */
Run Code Online (Sandbox Code Playgroud)

cli*_*ath 5

POW()返回一个"双精度"浮点数,它只有一个53位的尾数.您期望精度达到64位.请参阅http://dev.mysql.com/doc/refman/5.7/en/floating-point-types.html