Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JavaScript: Round to a number of decimal places, but strip extra zeros

Here's the scenario: I'm getting .9999999999999999 when I should be getting 1.0.
I can afford to lose a decimal place of precision, so I'm using .toFixed(15), which kind of works.

The rounding works, but the problem is that I'm given 1.000000000000000.
Is there a way to round to a number of decimal places, but strip extra whitespace?

Note: .toPrecision isn't what I want; I only want to specify how many numbers after the decimal point.
Note 2: I can't just use .toPrecision(1) because I need to keep the high precision for numbers that actually have data after the decimal point. Ideally, there would be exactly as many decimal places as necessary (up to 15).

like image 946
Nathan Avatar asked Sep 05 '11 20:09

Nathan


People also ask

How do you remove floating trailing zeros?

To remove the trailing zeros from a number, pass the number to the parseFloat() function. The parseFloat function parses the provided value, returning a floating point number, which automatically removes any trailing zeros.

What is the trailing zero rule?

To determine the number of significant figures in a number use the following 3 rules: Non-zero digits are always significant. Any zeros between two significant digits are significant. A final zero or trailing zeros in the decimal portion ONLY are significant.


2 Answers

>>> parseFloat(0.9999999.toFixed(4)); 1 >>> parseFloat(0.0009999999.toFixed(4)); 0.001 >>> parseFloat(0.0000009999999.toFixed(4)); 0 
like image 153
Gus Avatar answered Oct 16 '22 17:10

Gus


Yes, there is a way. Use parseFloat().

parseFloat((1.005).toFixed(15)) //==> 1.005 parseFloat((1.000000000).toFixed(15)) //==> 1 

See a live example here: http://jsfiddle.net/nayish/7JBJw/

like image 33
Nachshon Schwartz Avatar answered Oct 16 '22 16:10

Nachshon Schwartz