jeg har været inde og kigge på et par forskellige spørgsmål her på eksperten, men selvom andre har spurgt om ca. det samme har jeg ikke kunnet få noget at deres kodeeksembler til at virke korrekt.
jeg skal afrunde to tal hvor 0,5 runder op (Dvs. alm. skole afrunding.) jeg ska dog gøre det på anden desimal.
dvs. 0,35 = 0,4 Jeg har prøvet med følgende:
X := 0.35 ; if RealRound ( 10 * X ) > RealRound ( 10 * 0.3 ) then
Som afrunding har jeg prøvet med :
function RealRound(X: extended): int64; var i: int64; begin i := Round(x); if i - Round(x + 1) <> 0 then inc(i); result := i; end;
Problemet er at den runder også 0.3 * 10 til 4, og så er jeg jo lige vidt
håbede du ville svare, da jeg kan se at du har rimeligt godt styr på floats, med de andre svar du har givet herinde :-)
Jeg har set en del andre steder at man skal gøre således:
function CorrectRound ( X : Extended ) : Int64 ; var i: int64; begin Result := Trunc(x); if (Frac(x) >= 0.5) then Result := Result + 1; end;
men det virker heller ikke... Så nu gør jeg sådan : if (Frac(x) >= 0.49999) then
Fordi du skrev tidligere at man skal beslutte hvor stor upræcition man vil tillade ... og jeg har kun brug for 3 decimaler. Men er dette virkelig den bedste måde ?
Result := Trunc(x); if (Frac(x) >= 0.5) then Result := Result + 1;
og
Trunc(x + 0.5)
Den almindelige Round bruger bankers rounding, hvilket ikke altid er godt i DK
Kan du forklare lidt mere om konteksten hvor komemr tallene fra og hvordan skal de bruges ? Det vil gøre det nemmere at komme med en anbefaling. bør give det samme
Jeg er lige ved at ryde op i mine gamle spørgsmål, og kan se at jeg skylder dig 60 point ... spørgsmålet er hvad renten er på 9 år ;-) Smid et svar, ellers lukker jeg det bare
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.