select POWER(2.,64.)zwraca 18446744073709552000zamiast 18446744073709551616. Wygląda na to, że ma tylko 16 cyfr precyzji (zaokrąglenie 17).
Nawet precyzując precyzję select power(cast(2 as numeric(38,0)),cast(64 as numeric(38,0))), nadal zwraca zaokrąglony wynik.
Wydaje się, że jest to dość podstawowa operacja polegająca na tym, że łuszczy się z taką dokładnością przy 16 cyfrach. Najwyższe, jakie może poprawnie obliczyć, to tylko POWER(2.,56.)nie POWER(2.,57.). Co tu się dzieje?
Naprawdę straszne jest to, że 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.;faktycznie zwraca odpowiednią wartość. Tyle o zwięzłości.