14. september 2004 - 13:02 Der er 15 kommentarer og
1 løsning

Access tildeler selv ekstra decimaler

Er der en venlig sjæl, som kan fortælle mig (eller finde et link på MSDN'en, som forklarer) hvorfor Access nogle gange sætter en lang række decimaler på helt simple tal og beregninger.

Et eks:
En funktion, som ser således ud:

Public Function geta() As Single
    geta = 2.4
End Function


En forespørgsel, som har et felt, som ser således ud:
A: geta()

resultat:
Hele kolonnen viser tallet 2,4000000954

Hvor hel.... kommer de sidste 000000954 fra???

Det samme gør sig gældende, hvis man dropper funktionen og bare laver en kolonne i forespørgslen som hedder:
A: CSng("2,4")

Samme resultat: 2,4000000954

Hvordan slipper man for disse decimaler (og jeg snakker ikke om at 'formattere dem væk')

pfh tak
Thomas
Avatar billede ldanielsen Nybegynder
14. september 2004 - 13:25 #1
Decimaltal er næsten værre end dato- og valuta-felter tilsammen.

Jeg forsøger altid at arbejde i heltal, fx gemmer jeg beløb som ører. Ikke et svar, men måske en løsning ...

Hvis du nu ganger det hele med tusind, så ville dit resultat blive 2400, og kommaet kan du så "formattere frem" når data præsenteres for brugeren.
Avatar billede proaccess Nybegynder
14. september 2004 - 13:53 #2
Du kan starte med at skælde ud på pc'ens opbygning omkring det binære talsystem...

http://support.microsoft.com/default.aspx?scid=kb;en-us;125056
14. september 2004 - 14:12 #3
jeg har skældt ud, men den gør det stadig :o(
14. september 2004 - 14:13 #4
nå, men så blev jeg da så klog :o)

Sjovt nok, så var det netop dig, jeg regnede med ville komme med et forklarende link.

Smid et svar og indkasser :-)
Avatar billede proaccess Nybegynder
14. september 2004 - 14:13 #5
Så er det ligesom med konen, der er visse unoder, som bare ikke kan rettes  ;0)

Dette er et problem i alle programmeringssprog, da det skyldes måden tal omdannes på fra vores ti-talssystem og til computerens binære talsystem...  8-(
Avatar billede proaccess Nybegynder
14. september 2004 - 14:14 #6
Svar!
14. september 2004 - 14:15 #7
Hvorfor virker det så i VBA?

Min geta-funktion returnere det korrekte, hvis jeg spørger i debug-vinduet.
14. september 2004 - 14:18 #8
Lars-> Tak til dig også, forøvrigt.
Jeg kan godt se, at man kan løse nogle af problmerne ved at gange op. Men jeg har nogle problemer, hvor det desværre ikke lader sig løse på den måde :o(
Avatar billede proaccess Nybegynder
14. september 2004 - 14:25 #9
Jeg kan godt se at du får det rigtige resultat (i dette tilfælde) i VBA, og her er det så Access, som fejler men stadig på grund af den interne repræsentation af data...
...og nu skal du venligst ikke komme og spørge efter eksempler på hvor VBA vil fejle i din funktion...
Avatar billede proaccess Nybegynder
14. september 2004 - 14:26 #10
Problemet er netop at du ikke kan vide dig sikker - hvornår bliver hun gal under opvasken?

Ved at der er en usikkerhed i om man får det rigtige resultat, så kan man ikke bruge resultatet til noget...  (her lader jeg så være med at sammenligne med konen!)
14. september 2004 - 14:31 #11
LOL :o)

Kan man konkludere, at NASA og andre lignende organisationer ikke bruger almindelige floating-point-computere? Eller arbejder de bare uden decimaler?

Og hvad gik hele den gamle problematik om, at Pentium II regnede forkert på 16. decimal, så ud på, hvis de alle regner forkert på 3-4 decimal!???
Avatar billede proaccess Nybegynder
14. september 2004 - 14:43 #12
Nu er vi jo langt ude i decimalerne, men prøv evt. at kigge på datatypen "Decimal", jeg mener at den repræsenterer data på en anden måde...  har dog ikke lige tid til at kigge nærmere på den nu (jeg ved bare at når jeg importerer data fra vores AS/400, så oprettes de automatisk i "Decimal")
14. september 2004 - 14:47 #13
ok, tak for svarerne :o)
14. september 2004 - 14:56 #14
jamen, jeg tror da, at Decimal er løsningen på alle mine problemer!! :o))

I VBA skal den jo så bare hedde Variant (indtil MS finder ud af at lave en VBA-datatype til den)!

Har jeg nævnt, at du er genial, Proaccess?
Avatar billede proaccess Nybegynder
14. september 2004 - 14:58 #15
Et par gange vist nok...  ;0) 
... men fortsæt bare!
14. september 2004 - 14:58 #16
:o)
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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