07. oktober 2004 - 10:04Der 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
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
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
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)
Synes godt om
Ny brugerNybegynder
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.