开发者

Rounding numbers to 2 digits after comma

开发者 https://www.devze.com 2023-01-23 07:06 出处:网络
I have no idea how to do this? I\'m adding comma numbers, result i开发者_运维技巧s of course always a number with way too many digits after the comma. anyone?EDIT 2:

I have no idea how to do this? I'm adding comma numbers, result i开发者_运维技巧s of course always a number with way too many digits after the comma. anyone?


EDIT 2:

Use the Number object's toFixed method like this:

var num = Number(0.005) // The Number() only visualizes the type and is not needed
var roundedString = num.toFixed(2);
var rounded = Number(roundedString); // toFixed() returns a string (often suitable for printing already)

It rounds 42.0054321 to 42.01

It rounds 0.005 to 0.01

It rounds -0.005 to -0.01 (So the absolute value increases on rounding at .5 border)

jsFiddle example


UPDATE: Keep in mind, at the time the answer was initially written in 2010, the bellow function toFixed() worked slightly different. toFixed() seems to do some rounding now, but not in the strictly mathematical manner. So be careful with it. Do your tests... The method described bellow will do rounding well, as mathematician would expect.

  • toFixed() - method converts a number into a string, keeping a specified number of decimals. It does not actually rounds up a number, it truncates the number.
  • Math.round(n) - rounds a number to the nearest integer. Thus turning:

0.5 -> 1; 0.05 -> 0

so if you want to round, say number 0.55555, only to the second decimal place; you can do the following(this is step-by-step concept):

  • 0.55555 * 100 = 55.555
  • Math.Round(55.555) -> 56.000
  • 56.000 / 100 = 0.56000
  • (0.56000).toFixed(2) -> 0.56

and this is the code:

(Math.round(number * 100)/100).toFixed(2);


This worked for me:

var new_number = float.toFixed(2);

Example:

var my_float = 0.6666

my_float.toFixed(3) # => 0.667


Previous answers forgot to type the output as an Number again. There is several ways to do this, depending on your tastes.

+my_float.toFixed(2)

Number(my_float.toFixed(2))

parseFloat(my_float.toFixed(2))


This is not really CPU friendly, but :

Math.round(number*100)/100

works as expected.


Though we have many answers here with plenty of useful suggestions, each of them still misses some steps.
So here is a complete solution wrapped into small function:

function roundToTwoDigitsAfterComma(floatNumber) {
    return parseFloat((Math.round(floatNumber * 100) / 100).toFixed(2));
}

Just in case you are interested how this works:

  1. Multiple with 100 and then do round to keep precision of 2 digits after comma
  2. Divide back into 100 and use toFixed(2) to keep 2 digits after comma and throw other unuseful part
  3. Convert it back to float by using parseFloat() function as toFixed(2) returns string instead

Note: If you keep last 2 digits after comma because of working with monetary values, and doing financial calculations keep in mind that it's not a good idea and you'd better use integer values instead.


use the below code.

alert(+(Math.round(number + "e+2")  + "e-2"));


I use this:

function round(value, precision) {

	if(precision == 0)
		return Math.round(value);  	

	exp = 1;
	for(i=0;i<precision;i++)
		exp *= 10;

	return Math.round(value*exp)/exp;
}


All the suggestions above do not seem to be working with all numbers (negative ones included)

  1. 0.075 => 0.08

  2. -0.075 => -0.08

  3. 0.005 => 0.01

  4. -0.005 => -0.01

    Math.sign(num) * (Math.round((Math.abs(num) + Number.EPSILON) * 1e2) / 1e2);


console.log((Math.random().toFixed(2)));

I'am use tofixd() still working ok

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号