1. ## Rounding ...

Guys,

This problem has been bugging me for a couple days now ... I hope someone can help me.

I have to round a fractional value from a form input to either 0, 25, 50 or 75. I have succesfully tested the value and stripped the decimal place. If the value is for example .1, I round it to 0. If the value is say .2, I round it to .25. My problem is that when the value is > .75, my function is returning undefined. For the sake of brevity I will include only the relevant code.

Code:
```var increments = new Array(0,25,50,75);

CharBefore = parseFloat(CharBefore); //the whole number
CharAfter = parseFloat(CharAfter);   //the decimal

var x = parseFloat(increments.length - 1) ;

for ( i = 0; i <=  x ; i++  ) {

var testValue = parseFloat(increments[i]);
if (CharAfter > testValue) { continue ; }
else {
var lowerValue = parseFloat(increments[i-1]);
if ((CharAfter > testValue) && (i==x)) {

median =  (testValue + 100)/2 ;
if (CharAfter >= median) {
CharAfter = '0';
CharBefore++;} //round up to next whole number
else { CharAfter = testValue; }

}
else {
median =  (testValue + lowerValue)/2 ;
if (CharAfter >= median) { CharAfter = testValue; }
else { CharAfter = lowerValue; }

}
return  CharBefore + '.' + CharAfter;
break;

}

} // End for loop```
Any help is greatly appreciated.

2. What should it return? should it always round down to .75?

Anyhow, here's a vastly simplified algorithm for the rest of it
Code:
```function rounder( number )
{
return Math.round( number * 4 ) / 4;
}

3. Originally Posted by beetle
What should it return? should it always round down to .75?

Anyhow, here's a vastly simplified algorithm for the rest of it
Code:
```function rounder( number )
{
return Math.round( number * 4 ) / 4;
}

frickin' amazing ...

No, it shouldn't always round down to .75 ... your function does exactly what I need.

Thanks so much for that !!!

4. And: here's the correct way.
Code:
```Number.prototype.rounder = function ()
{
return Math.round( this * 4 ) / 4;
}

x = .1
x = .2

5. Oooh! Caught off guard by my own critique!

Funny that you post this whilst I'm writing my javascript scope article =)

The function was already written though, I just needed the rounding part of the decimal done.

The relvant parts of the code is now

Code:
```CharAfter = parseFloat(CharAfter);
CharAfter = Math.round( CharAfter * 4 ) / 4;
return  CharBefore + CharAfter;```
I needed to automatically round any decimal portions of a number into .25 increments, so ...

1.1 = 1
1.19 = 1.25
1.41 = 1.5

etc.

I know the Math object and round function, but just never thought about using them like this. Brain has been fried recently ... to much coding!!

Thanks again guys.

7. ... and now I see that I don't need to be parsing any numbers either.... the one line function does it all ...

Even better ... more thanks !!

#### Posting Permissions

• You may not post new threads
• You may not post replies
• You may not post attachments
• You may not edit your posts
•