Avatar billede puppetmaster Nybegynder
07. oktober 2004 - 10:04 Der er 2 kommentarer og
1 løsning

Afrunding af værdi på formular

Min formular opdaterer nogle felter i en tabel (og på selve formularen), hver gang der klikkes på Registrer-knappen. Samme formular har også en Slet-knap. De data der opdateres er f.eks. en vægt, som f.eks. 22,792 (kg).
Hvis der klikes 10 gange på Registrer og derefter 10 gange på slet, vil der i vægt-feltet så en meget lille værdi, eksempelvis
3.18E-12.
Det er jeg ikke interesseret i at brugeren ser, der skal afrundes til nærmeste 2-3 decimaler (i dette tilfælde altså et rent 0)
Hvordan gør jeg det?
Troede det var nok at sætte formatet til Tal og Antal decimaler = 2
07. oktober 2004 - 10:10 #1
Problemet skyldes sikkert PC'ens velkendte floating-point-problematik, hvor den ikke regner særlig præcist på alm. reelle tal.

Hvis du har mulighed for at skifte datatype til Decimal fungere det bedre. (hvis du benytter en variabel i VBA til mellemregninger, skal den have datatypen Variant, da Decimal ikke findes som VBA-datatype)

Eller....
du kan benytte denne funktion til at afrunde (som du selv forespørger):

Public Function Afrundtal(Tal As Single, Optional Nærmeste As Single = 1, Optional RundOp As Boolean = False) As Variant
    Dim tmp As Single
    Select Case Nærmeste
        Case 1
            tmp = Int(Tal + IIf(RundOp = True, 1, 0.5))
        Case Else
            tmp = Int(Tal / Nærmeste + IIf(RundOp = True, 1, 0.5)) * Nærmeste
    End Select
    Afrundtal = tmp
End Function

Den benyttes således:
Afrundtal(43.1234, 0.01)
resultat:
43.12
Avatar billede puppetmaster Nybegynder
07. oktober 2004 - 10:23 #2
Format = Fast
Antal decimaler = 2

Takker, thomas.
07. oktober 2004 - 10:31 #3
nåå, jeg troede, at du havde afprøvet format-metoderne.
Problemet med format er jo, at der rent faktisk stadig står 3.18E-12 i feltet, selvom brugeren ikke ser det umiddelbart. Hvis han klikker i feltet, vil han se at der ikke står 0 men et andet tal. OG hvis du regner videre på det eller spørger på om det er nul, vil du få et forkert resultat.

Anyway, tak for point alligevel :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