Sone:> Int regner ikke forkert! ;) Problemet er at 4,6, så vidt jeg kan regne ud, er en uendelig decimal brøk i det binære talsystem, og den måde som decimaler bliver lagret på internt giver afrundingsfejl ved visse tal. Som MS siger det er ikke en fejl, det er \'behaviour by design\'
oswald:> Uden at have regnet efter, kunne jeg være tilbøjelig til at give dig ret, men... Hvordan forklarer du, at det i dette eksempel kun er for en faktor 100, det går galt. Og hvis dit eget eksempel holder, så kun for Int() funktionen?
Mit eksempel laver også regnefejlen. Det er ikke kun faktor 100 der går galt, int(gurli * 100000) giver 459999 og int(test * 100000000) giver 459999999. Når vi snakker om meget små afrundingsfejl vil forskellen altid opstå på sidste decimal.
Den eneste måde at sikre sig mod den type afrundingsfejl er ved at sørge for at holder alle betydende cifre i integer delen. I denne tilfælde vil det betyde at det oprindelige regnestylle skylle være noget i stilen med.
dim gurli gurli= 23/5 * 100 Response.Write (gurli \\ 100) & \".\" & (gurli mod 100)
--- lidt historie --- Den første version af windows calculator lavede faktisk en lignende fejl. Hvis man dividerede 1 med 10 og lage resultatet til sig selv 10 gange fik man ikke 1 men 0,999.... :)
Har du en stor sentimental tilknytning til din Points ;) eller vil du have en yderligere uddybning?
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.