Jon Klose Larsen wrote in dk.edb.internet.webdesign.serverside.asp:
> Det sjove ved det hele er, at hvis jeg isolerer beregningen i en seperat fil
> og bruger faste data, så virker det ok.
... hvilket er en god indikation af at beregning er rigtig, men noget andet går
galt! :)
Jeg har kommenteret herunder (visse dele af koden er ikke citeret)
> Her er min kode:
>
> ********** Kode ****************
> if isnumeric(outarray(bx,5)) and isnumeric(outarray(bx,6)) and
> isnumeric(outarray(bx,33)) and isnumeric(outarray(bx,34)) then
> lat1 = cdbl(outarray(bx,5))
> lon1 = cdbl(outarray(bx,6))
> lat2 = cdbl(outarray(bx,33))
> lon2 = cdbl(outarray(bx,34))
På dette sted er lon2 et tal
> response.write "lat1: " & lat1 & " " & "lon1: " & lon1 & "<br>"
> response.write "lat2: " & lat2 & " " & "lon2: " & lon2 & "<br>"
Du får så et output som fx er:
> lat2: 35.758056 lon2: 010.754722
Her er noget galt for ASP kunne aldrig(?) finde på at udskrive et tal med
foranstillet 0 (altså 010.754722 i stedet for 10.754722).
Jeg tror at det du får udskrevet ikke er de tal du bruger i selve beregningen,
men i stedet de bagvedliggende data, som stadig er strenge.
Altså du henter strengen "010.754722" i databasen og så er det den du ubehandlet
får udskrevet.
Er du sikker på at output er dannet ved at køre præcis den kode du har sendt med
output ?
Nå, ovenstående var vist et lille sidespring, men min pointe er at hvis man
kører med dansk talformat (hvilket sikkert er standard, hvis du ikke har ændret
noget), så bliver
CDbl("010.754722") til tallet 10754722
mens
CDbl("010,754722") bliver til tallet 10,754722
> ********** Output *************
> lat1: 35.75981 lon1: 10.75314
> lat2: 35.758056 lon2: 010.754722
> distance1: 14149 km
> distance2: 14149,06286285 km
Hvis man gennemgår dine beregninger med de forkerte tal (altså dem, hvor kommaet
er forsvundet) så får man dine tal.
Hvis man sikrer sig at kommaet ikke forsvinder, så får jeg ovenstående eksempel
til 0,241986. Jeg kan ikke bedømme om det er rigtigt, men der lyder
fornuftigt... :)
En mulig rettelse kunne være at ændre
lat1 = cdbl(outarray(bx,5))
til
lat1 = cdbl(replace(outarray(bx,5), ".", ",")
Rettelsen skal selvfølgelig laves for alle 4 koordinater.
Håber det løser dit problem,
Torben
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! =>
http://www.html.dk/tutorials