nevan king
nevan king

Reputation: 113747

Truncate decimal number (as strings) to a fixed number of places

I want to truncate numbers (given as strings) to a fixed number of decimal places. The numbers can be negative (with a minus sign), positive (no sign). I'd prefer to round the numbers properly and keep trailing zeroes. I want the same number of decimal places, no matter how long the whole number is. The numbers will be stored back as strings.

For example:

140.234234234 -> 140.234
1.123123 -> 1.123
-12.789789 -> -12.790

Upvotes: 6

Views: 7298

Answers (3)

Cris Stringfellow
Cris Stringfellow

Reputation: 3808

function truncate( numberString, trunk ) {
    var onpoint = numberString.split('.',2);
    var numberStringTruncated = numberString;
    if (onpoint.length > 1) {
        numberStringTruncated = onpoint[0] + '.' + onpoint[1].substring(0,trunk);
    }
    return numberStringTruncated;
}

This does not consider rounding or padding. As the other answer suggested, you should use parseFloat followed by toFixed

Upvotes: 0

bfavaretto
bfavaretto

Reputation: 71908

First parse them as floats, then format with toFixed:

var nums = [
    "140.234234234", // -> 140.234
    "1.123123", // -> 1.123
    "-12.789789" // -> -12.790
];

nums.forEach(function(n) {
    console.log(parseFloat(n).toFixed(3));
});

http://codepen.io/anon/pen/IvxmA

Upvotes: 7

steveukx
steveukx

Reputation: 4368

Any number can be displayed as a fixed decimal place string by using .toFixed:

var num = 140.234234234;
var fixedDecimalPlace = num.toFixed(3); // is "140.234"

Upvotes: 2

Related Questions