Avatar billede hkb-x Nybegynder
18. maj 2009 - 16:28 Der er 12 kommentarer

mysql decimal nøjagtighed

jeg laver nogle beregninger i min database hvor jeg skal bruge ekstrem stor decimal nøjagtighed. men når jeg f.eks dividerer bliver nøjagtigheden reduceret til kun 15 decimaler, hvordan sætter jeg det op og kan det gøres kun for bestemte forespørgsler?
Avatar billede arne_v Ekspert
18. maj 2009 - 16:37 #1
REAL/DOUBLE opererer med ca. 15 cifres precision, da de er 64 bit floating point.

DECIMAL/NUMERIC kan bruge op til 65 cifre, men ar altsaa fixed point.
Avatar billede arne_v Ekspert
18. maj 2009 - 16:39 #2
Avatar billede hkb-x Nybegynder
18. maj 2009 - 16:44 #3
jeg sider på de sider men hvordan kan jeg bruge det.

hvis jeg gerne vil have f.eks. 20 decimaler på forespøgslen:

select sum(a/b) as r from t

altså så jeg får r men 20 decimaler?
Avatar billede arne_v Ekspert
18. maj 2009 - 16:56 #4
brug typen DECIMAL(30,20)
Avatar billede hkb-x Nybegynder
18. maj 2009 - 16:58 #5
ja, men hvordan. disse resultater skal ikke sættes ind noget sted jeg vil bare gerne have udskrevet et resultat med høj nøjagtighed.

jeg vil meget gerne have et eksempel på hvordan det skal gøres.
Avatar billede arne_v Ekspert
18. maj 2009 - 17:13 #6
Hvis felterne a og b i t har den type, saa boer den query returnere et praecist resultat som oensket.
Avatar billede hkb-x Nybegynder
18. maj 2009 - 17:30 #7
Hvis det her skal virke på heltal så skal man skrive:

select CONVERT(sum(CONVERT(a, DECIMAL(65,30))/CONVERT(b, DECIMAL(65,30))), DECIMAL(65,30)) as r from t

det giver 30 decimaler men giver en helvedes forespørgsel ved større beregninger. er der en måde at øge korrekstheden til mere end 30 decimaler?
Avatar billede arne_v Ekspert
18. maj 2009 - 18:02 #8
Jeg tror ikke at den yderste CONVERT er noedvendig.

Hvilken type er a og b i databasen? Hvis ikke de er en type som DECIMAL(65,30), saa er der jo ikke nogen pointe i at lave en hoej praecision udregning.

Du kan frit fordele cifre foran og bagved decimal punktum f.eks. DECIMAL(65,30), DECIMAL(65,40), DECIMAL(65,50) etc..
Avatar billede hkb-x Nybegynder
18. maj 2009 - 18:13 #9
DECIMAL(65,n) kan max have n = 30 desværre
Avatar billede arne_v Ekspert
18. maj 2009 - 18:26 #10
Tja - saa er der en begraensning der.
Avatar billede arne_v Ekspert
22. maj 2009 - 18:46 #11
Hvilken type er a og b i databasen?
Avatar billede arne_v Ekspert
04. juli 2009 - 03:24 #12
Tid at få afsluttet her ?

(og et svar fra mig)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester