Avatar billede DMO Novice
08. juli 2015 - 09:30 Der er 6 kommentarer og
1 løsning

Forklar lidt kode for mig

Jeg har overtaget noget kode fra en anden og inde i den ligger dette som jeg ikke helt forstår og håber nogen kunne give mig en forklaring før jeg begynder at ændre eller fjerne den.

Hvornår er 'if' sandt og hvornår bruger den 'else'?
Hvorfor er det lavet sådan? (er der en chance for at det bliver null eller 0?)

vis nu SamletVaegt var/blev 30 via noget complex loop og udregning
---------------------------------------------------------

if Int((SamletVaegt/1000)) < (SamletVaegt/1000) then
      HeleKilo = int((SamletVaegt/1000))+1
  else
      HeleKilo = (SamletVaegt/1000)
end if

Session("SamletVaegt") = (HeleKilo*1000)

----------------------------------------------------------
Personligt så jeg gerne at det endte med session(samletvaegt) = samletvaegt i stedet for, men jeg kender ikke grunden til at dette er blevet lavet.
Avatar billede erikjacobsen Ekspert
08. juli 2015 - 10:18 #1
Det ligner en afrunding. Hvis der er 1001 gram, skal den give 2 HeleKilo. Hvis der er 1000 gram, skal den give 1 HeleKilo.

Det kunne man så sikkert lave en smule smartere ...
Avatar billede DMO Novice
08. juli 2015 - 10:57 #2
Det tror jeg du har ret i, så vis samletvaegt er 30 gram så ender det med at blive 1000gram i sessionen? (jeg troede det ville blive 1030 gram) begge er skidt fordi jeg har en "if else" på en anden side som er
if session("samletvaegt") < (tal fra db som er 100) then
(kode der burde køre)
else
...
end if
Avatar billede erikjacobsen Ekspert
08. juli 2015 - 11:21 #3
Du kan jo gemme begge værdier i to session variabler: den oprindelige og den af(op)rundede.
Avatar billede DMO Novice
08. juli 2015 - 11:30 #4
det gør den egentlig også. næsten

<%Session("HeleKilo") = HeleKilo%>
<%Session("FragtUdland") = GrundPris+(KiloPris*HeleKilo)%>
<%Session("SamletVaegt") = (HeleKilo*1000)%>

jeg må nok ændre det til

Session("SamletVaegt") = SamletVaegt

-----
det hjælper lidt at forstå hvad der sker.
vis du vil have points siger du bare til
Avatar billede softspot Forsker
08. juli 2015 - 11:35 #5
Det er en simulering af Ceil-funktionen (som umiddelbart ikke findes i VBScript). Den bruges, hvis der altid skal rundes op til nærmeste heltal.

Hvorfor konstruktionen er lavet i din kode, må bero på en forretningsregel om, at den pågældende værdi altid skal rundes op. Det kunne f.eks. være smart, at forsendelser ikke vejer mere end man har betalt for i forsendelse, så derfor vil en oprunding af den reelle vægt sikre, at du får betalt den forsendelse du skal.
Avatar billede erikjacobsen Ekspert
08. juli 2015 - 11:46 #6
Ingen point til mig, tak
Avatar billede DMO Novice
27. juli 2015 - 11:36 #7
lukker
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

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