Avatar billede the-lion Nybegynder
14. februar 2006 - 23:35 Der 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?
Avatar billede Slettet bruger
14. februar 2006 - 23:40 #1
Hvad med:
<%
tal = "45,67657893"
tal = formatnumber(tal,2,0)
%>
- så skulle der gerne kun komme to decimaler...

\Dan
Avatar billede the-lion Nybegynder
14. februar 2006 - 23:45 #2
Den husker stadig de øvrige decimaler!!!
Avatar billede the-lion Nybegynder
14. februar 2006 - 23:46 #3
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?
Avatar billede 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
Avatar billede 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...

\Dan
Avatar billede the-lion Nybegynder
14. februar 2006 - 23:49 #6
Kan man samle den formel i 1 linie? kan ikke lige helt se hvordna den virker?
Avatar billede the-lion Nybegynder
14. februar 2006 - 23:49 #7
Hvad hvis at gangestykket fiver et helt tal, vil den så lave fejl eller?
Avatar billede 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
Avatar billede 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...

\Dan
Avatar billede the-lion Nybegynder
14. februar 2006 - 23:55 #10
Den beholder da stadig alle decimaler i hukommelsen?
Avatar billede the-lion Nybegynder
14. februar 2006 - 23:57 #11
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
Avatar billede pidgeot Nybegynder
14. februar 2006 - 23:59 #12
Er der ikke en round funktion i ASP? For så var det jo bare at sige

Tal = Round(Pris*0.0575,2)
Avatar billede 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)
%>

\Dan
Avatar billede the-lion Nybegynder
15. februar 2006 - 00:14 #14
Ok, takker :-)
Kom med et svar...
Avatar billede Slettet bruger
15. februar 2006 - 00:15 #15
OK!

- Her kommer et svar!

Men fik du det til at virke?

\Dan
Avatar billede the-lion Nybegynder
15. februar 2006 - 00:26 #16
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?
Avatar billede the-lion Nybegynder
15. februar 2006 - 23:28 #17
Den fejler fordi MICROSOFT IKKE KAN REGNE

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?)
Avatar billede 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...!

\Dan
Avatar billede the-lion Nybegynder
16. februar 2006 - 00:12 #19
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... :-)
Avatar billede 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...

\Dan
Avatar billede the-lion Nybegynder
16. februar 2006 - 18:14 #21
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"
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
Kurser inden for grundlæggende programmering

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