14. februar 2006 - 23:35Der er
20 kommentarer og 1 løsning
Rund op eller ned
Når man ganger et tal med 0.0455 kan det give nogle mystiske tal så som 45,67657893 Mit spørgsmål er så hvordan får jeg rundet af til nærmeste 2 cifre, og det på en måde så den glemmer alt om de øvrige cifre hvis man sætter værdien ind i en variabel og kalder den igen uden at man igen skal lave afrunding, er dette muligt - og hvordan?
Der kommer rigtignok kun 2 decimaler i denne visning, men når jeg så kalder den variabel jeg har gemt værdien i så har den stadig alle decimaler det var dem jeg gerne ville have fjernet for altid?
Synes godt om
Slettet bruger
14. februar 2006 - 23:46#4
Nåh.... Det er da vist mig der sover igen... hehe! Du vil, som jeg kan se have "et mindre korrekt" tal hvor de øvrige decimaler ingen indflydelse har... - Så kunne nedenstående godt være løsningen...: <% tal = "45,67657893" tal = split(tal,",") finaltal = tal(0) & "," & left(tal(1),2) %> <%="" & finaltal & ""%>
\Dan
Synes godt om
Slettet bruger
14. februar 2006 - 23:47#5
- Du skal lige være opmærksom på at ovenstående script kun virker hvis det er et decimaltal vi har med at gøre...
Hvad hvis at gangestykket fiver et helt tal, vil den så lave fejl eller?
Synes godt om
Slettet bruger
14. februar 2006 - 23:51#8
- Ellers ville der nok være mere fornuft i at bruge følgenende: <% tal = "45,1234574561" tal = split(tal,",") for i=0 to ubound(tal) talcount=talcount+1 if talcount>1 then finaltal = finaltal & "," & left(tal(i),2) else finaltal = finaltal & tal(i) end if next %> <%="" & finaltal & ""%>
Her er det ligegyldigt om dit tal er et decimaltal eller ej...
\Dan
Synes godt om
Slettet bruger
14. februar 2006 - 23:54#9
- Hvad mener du med om man kan samle den formel i 1. linie? Skal det være en function eller hvordan?
- For ja! Du kan sagtens sætte denne formel ind i første linie... Og så er "finaltal" angivet som den skal være fra starten på din side...
Jeg bruger dette : Tal = Pris*0.0575 Så når jeg kalder tal uden at skulle lave afrundinger, må den kun have 2 decimaler (Den skal smide resten bort for altid
Er der ikke en round funktion i ASP? For så var det jo bare at sige
Tal = Round(Pris*0.0575,2)
Synes godt om
Slettet bruger
15. februar 2006 - 00:02#13
OK! Så sæt det her ind øverst i din asp-side: <% function afrundtal(tal) atal = Replace(tal,".",",") atal = split(atal,",") for i=0 to ubound(atal) talcount = talcount + 1 if talcount > 1 then afrundtal = afrundtal & "," & left(atal(i),2) else afrundtal = afrundtal & atal(i) end if next end function %>
og så skal din talstren for eksempel se således ud: <% MitTal = afrundtal(Pris*0.0575) %>
ja det virker fint nu (det ser i hvertfald sådan ud :-) Dog får jeg en regnefejl senere, men det må jeg se på i morgenfor hvis jeg ber den kun om at skrive den variabel, så virker det, men hvis den ligges sammen med andre tal bagefter, så fejler den?
MICROSOFT mener at 1*35,25 = 35.2499999645321 Hvorfor? Jo Feltet i databasen med værdien 1 = Langtheltal og feltet med værdien 53,25 er en Reelttal Det er for så vidt rigtigt, men når det ikke begge er reelttal eller begge er langtheltal, så giver det denne regnefejl
HVAD? = MICROSOFT LOGIK (Koster nogle udviklingstimer men hvor sender man regningen til?)
Synes godt om
Slettet bruger
15. februar 2006 - 23:44#18
Hmm...! Tjae... det du siger der har jeg godt nok aldrig oplevet med asp...! - jeg synes det lyder underligt!
Og du kan sige hvad du vil...! Min mening vil altid være at jeg synes asp er et genialt sprog som Microsoft har udviklet, som har fået mange mennesker til at lave nogle godt websites. Mange mennesker som ellers IKKE ville have kastet sig over server-side-scripting...!
Undskyld, jeg siger ikke ASP er dårligt, jeg er også vild med ASP sproget, men det er mere MS tankegang bag og det at sådanne fejl kan forkomme burde være umulige for en virksomhed af den størrelse og med den økonomi.... De har pengene og mulighederne hvorfor så ikke gå mere op i kvalitet og ja det var specilt deres Access DATABASE system jeg her er imod, for det er sikkert den der laver fejlen, ASP er helt uden skyld her, og det virker sikkert også fint hvis man istedet bruger en MySQL database sammen med ASP koden...
ASP er et kanont script/programmeringssprog... :-)
Synes godt om
Slettet bruger
16. februar 2006 - 17:55#20
Nej nej! Du skal ikke undskylde noget! - Jeg kom bare til at sige min mening om asp... Og egentlig så lader det til vi er ret enige... Men du har bestemt ikke "trådt nogen over tæerne" så der er ingen "bad feelings"...!
Hvis du vil have hjælp til det problem du nævner ovenfor med scriptet... Så vil jeg gerne at du prøver at forklare det lidt nærmere...
Jeg har løst det ved at lave begge tal felter i databasen til "Reelle tal" felter så der ikke er nogen af typen "Lang integer" så er der ingen problem længere, fejlen er der kun når man tager værdierne fra de 2 forskellige typer feks 1 tallet fra feltet af typen "Lang integer" og 35,25 fra feltet af typen "Reelle tal"
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.