20. november 2002 - 17:49Der er
8 kommentarer og 2 løsninger
Afrunding af 0.00000122244 til 2 betydningsfulde decimaler
Hvis man har et tal fx 2,222114 eller 0,000000002114587 hvordan kan man så sikrer sig at VB altid viser tallet med 2 betydningsfulde cifre. Dvs at 0,000000002164587 =0,0000000022 og 2,222114 = 2,22
En fusker-løsning er at gemme tallet som streng, læse cifrene efter kommaet et for et - så snart der stødes på et ciffer, der ikke er nul, tages det samt det næste med, resten trunkeres:
Dim i As Integer Dim strTal As String Dim strNytTal As String
strTal = 10.0100123456 For i = InStr(strTal, ".") + 1 To Len(strTal) If Not Mid(strTal, i, 1) = "0" Then Exit For Next i strNytTal = Mid(strTal, 1, i + 1) MsgBox strTal & " afrundes til " & strNytTal
Ovenstående afrunder strTal til strNytTal - prøv selv med copy-paste
Jeg bruger punktum som decimal-komma, så måska skal du rette lidt i det, hvis du ikke gør.
Hmmm - min løsning oprunder jo ikke - det kan dog klares ved at tage nogle flere decimaler med, afrunde, og først derefter trunkere. Men det er som sagt en fuskerløsning, og sikkert ikke det du er ude efter. Håber en anden kan fortælle os om en standard funktion i VB, der kan det du eftersøger - ellers må du i gang med at skrive en selv ;o)
Public Sub Afrund_Til_To_Betydende() Dim C As Variant, A As Variant, B As Integer, E As Variant, D As Variant _ , F As Integer, G As Integer, N As String
A = CDec(2.00000000214459) If Int(A) > 0 Then C = A - Int(A) ' decimalværdien End If D = CDec(C) B = Len(D) - 2 ' antal tegn efter kommaet E = CDbl(Val(Right(D, B))) ' værden efter kommaet som hetal(double) G = Len(E) 'Antal tegn med værdi efter kommaet E = CInt(Val(Mid(E, 1, 2) & "." & Right(E, G - 2))) F = B - G ' finder antal nuller efter kommaet N = Mid(C, 2, F + 1) ' streng med nuller 'E = Int((E * 100) / 100000) ' afrunder til to betydende Værdi = Int(A) & N & E Debug.Print Værdi
ok det ser ud til at virke nogenlunde...Men.... tallet 2.00000000214459 skrevet med 2 betydende cifre er 2.00, mens 0.0000000125 skrevet med 2 betydende cifre er 0.000000013 og 2.1246322 er 2.12
ok, det virker -->ocp. Tak for hjælpen...også til kabbak
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.