function to format a fixed digit number

Hello Folks,
I am using attached function to format some fixed digit number but it is giving me an error.
Please can you see if this is not correct?
thanks
s
<script>
function twoDecimal(num,round) {
  if (round) return num.toFixed(2);
  var stringNum = String(num);
  if (stringNum.indexOf('.')==-1) return stringNum+'.00';
  var newNum = stringNum.split('.');
  if (newNum.len==2) {
    newNum[1]=(newNum[1].length>2)?newNum[1].subString(0,2):newNum[1];
  }
  if (newNum[1].length==1) newnum[1]+="0"
  return newNum[0]+'.'+newNum[1]
}
alert(twoDecimal(133.5999,1));
alert(twoDecimal(133.5999));
alert(twoDecimal(133));
alert(twoDecimal(133.5));
 
</script>

Open in new window

LVL 8
newbie27Asked:
Who is Participating?
 
Airyck666Commented:
Since the only time you can't use the .toFixed to solve this is if !round and there's more than 2 decimal places.  So try somethig this code.
<script>
function twoDecimal(num,round) {
    
    var stringNum = String(num);
    var newNum = stringNum.split('.');
    if  (newNum.length > 1  && newNum[1].length > 1 && !round) {
        newNum[1]=(newNum[1].length > 2) ? newNum[1].substring(0,2) : newNum[1];
        return newNum[0]+'.'+newNum[1];
    } else {
        return String(num.toFixed(2));
    }
}
alert(twoDecimal(133.5999,1));
alert(twoDecimal(133.5999));
alert(twoDecimal(133));
alert(twoDecimal(133.5));
 
</script>

Open in new window

0
 
Airyck666Commented:
oops... you don't need the String object creation at line 10.
return num.toFixed(2);

Open in new window

0
 
newbie27Author Commented:
thanks
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.