Hướng dẫn javascript max decimal places

I wanted to display a number to 2 decimal places.

Nội dung chính

  • How do I limit the number of decimal places in JavaScript?
  • How many decimal places can a float hold?
  • How do I restrict a float value to only two places after the decimal point in JavaScript?
  • How many digits can JavaScript handle?

I thought I could use toPrecision(2) in JavaScript .

However, if the number is 0.05, I get 0.0500. I'd rather it stay the same.

See it on JSbin.

What is the best way to do this?

I can think of coding a few solutions, but I'd imagine (I hope) something like this is built in?

mskfisher

3,2174 gold badges33 silver badges47 bronze badges

asked Jul 2, 2010 at 3:21

Hướng dẫn javascript max decimal places

float_num.toFixed(2);

Note:toFixed() will round or pad with zeros if necessary to meet the specified length.

answered Jul 2, 2010 at 3:25

Jason McCrearyJason McCreary

69.8k21 gold badges128 silver badges170 bronze badges

8

You could do it with the toFixed function, but it's buggy in IE. If you want a reliable solution, look at my answer here.

answered Jul 2, 2010 at 3:23

Elias ZamariaElias Zamaria

91.4k31 gold badges112 silver badges143 bronze badges

2

number.parseFloat(2) works but it returns a string.

If you'd like to preserve it as a number type you can use:

Math.round(number * 100) / 100

answered Mar 4, 2019 at 13:33

rnmalonernmalone

92011 silver badges24 bronze badges

1

Don't know how I got to this question, but even if it's many years since this has been asked, I would like to add a quick and simple method I follow and it has never let me down:

var num = response_from_a_function_or_something();

var fixedNum = parseFloat(num).toFixed( 2 );

answered Jan 13, 2016 at 10:49

panospanos

4454 silver badges3 bronze badges

3

Try toFixed instead of toPrecision.

answered Jul 2, 2010 at 3:24

casablancacasablanca

68.5k7 gold badges132 silver badges148 bronze badges

0

with toFixed you can set length of decimal points like this:

let number = 6.1234
number.toFixed(2) // '6.12'

but toFixed returns a string and also if number doesn't have decimal point at all it will add redundant zeros.

let number = 6
number.toFixed(2) // '6.00'

to avoid this you have to convert the result to a number. you can do this with these two methods:

let number1 = 6
let number2 = 6.1234

// method 1
parseFloat(number1.toFixed(2)) // 6
parseFloat(number2.toFixed(2)) // 6.12

// method 2
+number1.toFixed(2) // 6
+number2.toFixed(2) // 6.12

answered Aug 9, 2021 at 7:23

codegamescodegames

1,32615 silver badges15 bronze badges

function round(value, decimals) { return Number(Math.round(value+'e'+decimals)+'e-'+decimals); }

round(1.005, 2); // return 1.01

round(1.004, 2); // return 1 instead of 1.00

The answer is following this link: http://www.jacklmoore.com/notes/rounding-in-javascript/

answered Nov 28, 2017 at 4:51

Huy NguyenHuy Nguyen

4143 silver badges10 bronze badges

0

I used this way if you need 2 digits and not string type.

    const exFloat = 3.14159265359;
    
    console.log(parseFloat(exFloat.toFixed(2)));

answered Oct 27, 2021 at 18:11

l2Dl2D

1643 silver badges5 bronze badges

You could try mixing Number() and toFixed().

Have your target number converted to a nice string with X digits then convert the formated string to a number.

Number( (myVar).toFixed(2) )


See example below:

var myNumber = 5.01;
var multiplier = 5;
$('#actionButton').on('click', function() {
  $('#message').text( myNumber * multiplier );
});

$('#actionButton2').on('click', function() {
  $('#message').text( Number( (myNumber * multiplier).toFixed(2) ) );
});




answered Aug 29, 2019 at 22:52

2

The toFixed() method formats a number using fixed-point notation.

and here is the syntax

numObj.toFixed([digits])

digits argument is optional and by default is 0. And the return type is string not number. But you can convert it to number using

numObj.toFixed([digits]) * 1

It also can throws exceptions like TypeError, RangeError

Here is the full detail and compatibility in the browser.

alex

467k197 gold badges865 silver badges975 bronze badges

answered May 9, 2018 at 5:59

Sunil GargSunil Garg

13.2k23 gold badges116 silver badges164 bronze badges

let a = 0.0500
a.toFixed(2);

//output
0.05

answered Apr 9, 2020 at 22:02

RizwanRizwan

3,3272 gold badges22 silver badges21 bronze badges

1

There's also the Intl API to format decimals according to your locale value. This is important specially if the decimal separator isn't a dot "." but a comma "," instead, like it is the case in Germany.

Intl.NumberFormat('de-DE').formatToParts(0.05).reduce((acc, {value}) => acc += value, '');

Note that this will round to a maximum of 3 decimal places, just like the round() function suggested above in the default case. If you want to customize that behavior to specify the number of decimal places, there're options for minimum and maximum fraction digits:

Intl.NumberFormat('de-DE', {minimumFractionDigits: 3}).formatToParts(0.05)

answered May 12, 2021 at 13:15

lmerinolmerino

1631 silver badge11 bronze badges

I have made this function. It works fine but returns string.

function show_float_val(val,upto = 2){
  var val = parseFloat(val);
  return val.toFixed(upto);
}

answered Mar 22, 2018 at 7:25

How do I limit the number of decimal places in JavaScript?

To limit decimal places in JavaScript, use the toFixed() method by specifying the number of decimal places..

Rounds the number..

Converts it into a string..

Returns the number as a string..

How many decimal places can a float hold?

The float data type has only 6-7 decimal digits of precision. That means the total number of digits, not the number to the right of the decimal point.

How do I restrict a float value to only two places after the decimal point in JavaScript?

To limit the number of digits up to 2 places after the decimal, the toFixed() method is used. The toFixed() method rounds up the floating-point number up to 2 places after the decimal.

How many digits can JavaScript handle?

You can think that in Javascript, integer numbers are accurate up to 15 digits. In this post, I'll present two different strategies to overcome these precision issues: one for decimal numbers and another for integer numbers.