Jørgen Farum Jensen <jfjenzen@yahoo.dk> writes:
> Hvordan afrunder man lige til nærmeste 25 øre,
> for eksempel 33.38 kr til 33.50 kr og
> 33.37 øre til 33.25 kr?
Ja, det er jo den nærmeste hele 25-øre. Der er 24 beløb
mellem to hele 25-øres-beløb, og tolv rundes til hver
side.
(Det heldige her er at der er et lige antal beløb mellem, så man
kan runde lige mange til hver side. Hvis man runder til nærmeste
krone skal man være mere forsigtig).
Eller mener du hvordan man gør det med kode?
I det tilfælde vil jeg anbefale at du tæller pengene i ører (eller
milliører, eller hvad minimumsenhed der nu passer så det hele bliver
heltal).
Hvis du har et heltal og skal afrunde til nærmeste hele 25, så kan
du bruge:
/**
* Round amount to nearest increment of base.
* If two increments are equally near, the result is rounded up
* (e.g., 1050 rounded to nearest 100 is 1100, not 1000).
* Both arguments must be integers
*/
function roundTo(amount, base) {
var offset = base >> 1;
var amount += offset;
return amount - (amount % base);
}
Eksempel:
var roundedUp = roundTo(3338, 25); // 3350
var roundedDown = roundTo(3337, 25); // 3325
Det er bare en finpudsning af den gode gamle regel for at runde
*af* ved at lægge 0.5 til og runde *ned*.
/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL:
http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'