Avatar billede dp2001 Juniormester
14. januar 2002 - 16:41 Der er 10 kommentarer og
1 løsning

Et \"simpelt\" regnestykke!

Jeg har værdierne 1,4 2,8 og 2,5 gemt i felterne k1o, k2o og k5o.

Hvis jeg laver følgende...

r1o = k1o * k2o * k5o
Response.Write r1o

får jeg 9,799999

Et tjek på lommeregneren giver 9,80, selv uden afrundinger mv.

Jeg har defineret mine data som Tal, reelt tal med 2 decimaler i Access.

Hvordan får jeg det til at regne rigtigt?
Avatar billede cool_casper Nybegynder
14. januar 2002 - 16:45 #1
Det er da klart fordi de er tal med to decimaler i Access databasen beryder ikke at de er det når du ganger dem BAGEFTER! De bliver kunne rundet ned når du sætter den ind i db\'en eller ændrer dem derinde.... Du skal bruge Response.Write Fix(r10) !!
Avatar billede cool_casper Nybegynder
14. januar 2002 - 16:48 #2
Sorry, det er Response.Write Round(r10,2)
Når du skal have 2 decimaler!
Avatar billede dp2001 Juniormester
14. januar 2002 - 16:49 #3
Det siger jeg heller ikke! Det er klart, at en beregning sagtens kan give mere end 2 decimaler.

MEN! 1,4 * 2,8 * 2,5 giver altså 9,8 og IKKE 9,799999!
Avatar billede dp2001 Juniormester
14. januar 2002 - 16:51 #4
Jeg skal bruge outputtet af r1o til følgende...

komma1Index = instr(1, r1o, \",\")
if komma1Index > 0 then
  r1o = LEFT(r1o,komma1Index+2)
end if

Dvs. en trunkering af alle cifre efter 2. decimal, så f.eks.

2,3  -> 2,3
2,31  -> 2,31
2,323 -> 2,32
2,325 -> 2,32

Derfor dur det ikke inden at bruge Round!
Avatar billede cool_casper Nybegynder
14. januar 2002 - 16:55 #5
Så brug:

r1o = k1o * k2o
r1o = r1o * k5o
Response.Write r1o
Avatar billede dp2001 Juniormester
14. januar 2002 - 17:00 #6
Det regnestykke giver stadig 9,799999 !
Avatar billede cool_casper Nybegynder
14. januar 2002 - 17:04 #7
Hvis jeg skriver:

k1o = \"1,4\"
k2o = \"2,8\"
k5o = \"2,5\"
r1o = k1o * k2o * k5o
Response.Write r1o

På min test-server får jeg 9.8 !!!
Avatar billede dp2001 Juniormester
14. januar 2002 - 17:06 #8
Meget muligt!

Jeg har lavet Response.Write for at tjekke værdierne og de er 1,4 2,8 og 2,5.

I don\'t get it!
Avatar billede cool_casper Nybegynder
14. januar 2002 - 17:11 #9
Prøv lave variablerne om til tekststrenge inden:

k1o = CStr(\"1,4\")
k2o = CStr(\"2,8\")
k5o = CStr(\"2,5\")

Response.Write r1o



Avatar billede dp2001 Juniormester
14. januar 2002 - 17:22 #10
Endelig noget der virkede!

Point på vej, takker for hjælpen!
Avatar billede cool_casper Nybegynder
14. januar 2002 - 17:25 #11
No problem....
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