select POWER(2.,64.)restituisce 18446744073709552000invece di 18446744073709551616. Sembra avere solo 16 cifre di precisione (arrotondando il 17).
Pur rendendo esplicita la precisione select power(cast(2 as numeric(38,0)),cast(64 as numeric(38,0))), restituisce comunque il risultato arrotondato.
Questa sembra un'operazione piuttosto semplice per sfaldarsi arbitrariamente a 16 cifre di precisione come questa. Il massimo che può calcolare correttamente è solo POWER(2.,56.), non riuscendo POWER(2.,57.). Cosa sta succedendo qui?
La cosa veramente terribile è che in select 2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.*2.;realtà restituisce il giusto valore. Questo per quanto riguarda la terseness.