03. november 2006 - 21:46Der er
28 kommentarer og 2 løsninger
Problemer med plus af tilfældige tal.
Jeg er stødt ind i et problem. Når jeg lader en asp side generer 2 tilfældige tal. Dividerer dem med 1000 for at lave dem om til kommatal, og til sidst plus dem. Giver det for det meste, et resultat med rigtig mange decimaler. f.eks.: 40,89 + 71,913 = 112,802999389648
hvad har jeg lavet galt i scriptet?
<table width=100%> <% teller = 1 for antal = 1 to 25 Randomize randnum1 = int(rnd * 10000) + 1000 FTal=randnum1/100
Når jeg laver en formatnumber virker det, men så er tallet med tællepunktum og 3 decimaler selvom de to sidste er nuller. Det bliver bøvlet at arbejde videre med de tal.
Men for at lærer mere om asp. Hvad er det der sker? Når jeg laver mit Randomize så afrunder ASP. Når jeg så vil lave til kommatal, ved at dividerer med feks 100 og derefter lægge dem sammen, så er tallet ikke afrundet mere!! hvorfor??
Er der nogen mulighed for at FORMATNUMBER automatisk tager det antal decimaler som tallet indeholder. Så hvis tallet har 3 decimaler bliver det retuneret fra FORMATNUMBER med 3, og hvis det har 2 bliver det retuneret med 2?
Hey.. det er vist noget tid siden, at der sidst var gang i tråden her..
Men her er en ide:
Lav en streng, der indeholder tallet. Tæl antallet af tegn, efter komma. Smid antallet af tegn over i en variabel. Brug variablen i stedet for "3", eller hvad du nu har af værdi for antallet af kommatal.
Eksempel: function FindAntalletAfKommatal(inputstreng)
dim intTal, intAntalKommatal, strTal intTal = CDbl(inputstreng) strTal = CStr(intTal) strTal = mid(strTal, InStr(strTal, ",") + 1) intAntalKommatal = len(strTal) FindAntalletAfKommatal = intAntalKommatal end function
' Test udskrivning: response.write "Antallet af kommatal for 123.4567 er: " & FindAntalletAfKommatal(123.4567)
Så kan du bruge det sådan her: intKommatalFTal = FindAntalletAfKommatal(FTal)
intKommatalATal = FindAntalletAfKommatal(ATal)
intAntalDecimaler = intKommatalFTal if intKommatalATal > intKommatalFTal then intAntalDecimaler = intKommatalATal
Jeg kom i tanke om, at den vil returnere længden af hele værdien, hvis værdien ikke indeholder kommatal..
Eksempel: FindAntalletAfKommatal(123) vil returnere 3, da "123" består af 3 tegn Men den skulle jo returnerer 0, da der ikke er kommatal.
Jeg har derfor rettet funktion, så den ser sådan ud:
function FindAntalletAfKommatal(inputstreng) dim intTal, intAntalKommatal, strTal intTal = CDbl(inputstreng) strTal = CStr(intTal) intAntalKommatal = 0 msgbox InStr(strTal, ",") if InStr(strTal, ",") > 0 then strTal = mid(strTal, InStr(strTal, ",") + 1) intAntalKommatal = len(strTal) end if FindAntalletAfKommatal = intAntalKommatal end function
Denne funktion erstatter den tidligere funktion.
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.