Nik
Nik

Reputation: 7283

Javascript Number Formatting

Certainly a stupid question, please forgive me. My customer wants decimal numbers to display with five digits. For example: 100.34 or 37.459. I was accomplishing this with val.toPrecision (5);; however, when my numbers get really small, I stop getting what I want. For example, if my number is 0.000347, it displays 0.00034700. Now, I understand why it's doing this, but what I don't know is how to get it to display 0.0003. Any thoughts?

Upvotes: 1

Views: 4579

Answers (4)

kfegen
kfegen

Reputation: 85

You can use the toFixed method to accomplish this. For example: (0.000347).toFixed(4)

Upvotes: 1

katspaugh
katspaugh

Reputation: 17939

Math.round(0.000347 * 1e4) / 1e4

Or with toFixed:

Number.prototype.toNDigits = function (n) {
    return (Math.abs(this) < 1) ?
        this.toFixed(n - 1) :
        this.toPrecision(n);
};

http://jsfiddle.net/HeQtH/6/

Upvotes: 5

codeandcloud
codeandcloud

Reputation: 55308

Our problem is with numbers less than 1 obviously. So catch them and deal them separately

function SetPrecisionToFive(n){  
    return (n > 1) ? n.toPrecision (5) : (Math.round(n * 1e4) / 1e4).toString();
}

Upvotes: 2

Kyle
Kyle

Reputation: 4238

The Javascript toFixed() function will truncate small numbers to a fixed decimal precision, eg:

var num = .0000350;
var result = num.toFixed(5); // result will equal .00003

Upvotes: -1

Related Questions