Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Javascript (http://www.velocityreviews.com/forums/f68-javascript.html)
-   -   FAQ Topic - How do I convert a Number into a String with exactly 2 decimal places? (http://www.velocityreviews.com/forums/t933189-faq-topic-how-do-i-convert-a-number-into-a-string-with-exactly-2-decimal-places.html)

 FAQ server 10-12-2007 11:00 PM

FAQ Topic - How do I convert a Number into a String with exactly 2 decimal places?

-----------------------------------------------------------------------
FAQ Topic - How do I convert a Number into a String with
exactly 2 decimal places?
-----------------------------------------------------------------------

When formatting money for example, to format 6.57634 to
6.58, 6.5 to 6.50, and 6 to 6.00?

Rounding of x.xx5 is uncertain, as such numbers are not
represented exactly. See section 4.7 for Rounding issues.

N = Math.round(N*100)/100 only converts N to a Number of value
close to a multiple of 0.01; but document.write(N) does not give
trailing zeroes.

ECMAScript Ed. 3.0 (JScript 5.5 [but buggy] and JavaScript 1.5)
introduced N.toFixed, the main problem with this is the bugs in
JScripts implementation.

Most implementations fail with certain numbers, for example 0.07.
The following works successfully for M>0, N>0:

function Stretch(Q, L, c) { var S = Q
if (c.length>0) while (S.length<L) { S = c+S }
return S
}
function StrU(X, M, N) { // X>=0.0
var T, S=new String(Math.round(X*Number("1e"+N)))
if (S.search && S.search(/\D/)!=-1) { return ''+X }
with (new String(Stretch(S, M+N, '0')))
return substring(0, T=(length-N)) + '.' + substring(T)
}
function Sign(X) { return X>0 ? "+" : X<0 ? "-" : " " }
function StrS(X, M, N) { return Sign(X)+StrU(Math.abs(X), M, N) }
Number.prototype.toFixed= function(n){ return StrS(this,1,n)};

http://www.merlyn.demon.co.uk/js-round.htm

http://msdn.microsoft.com/library/de...34c0f6d6f0.asp

--
Postings such as this are automatically sent once a day. Their
goal is to answer repeated questions, and to offer the content to
the community for continuous evaluation/improvement. The complete
comp.lang.javascript FAQ is at http://jibbering.com/faq/index.html.
The FAQ workers are a group of volunteers. The sendings of these
daily posts are proficiently hosted by http://www.pair.com.

 Evertjan. 10-13-2007 10:03 AM

Re: FAQ Topic - How do I convert a Number into a String with exactly 2 decimal places?

FAQ server wrote on 13 okt 2007 in comp.lang.javascript:

> Rounding of x.xx5 is uncertain, as such numbers are not
> represented exactly.

I do not see that:

n = 212345.50

// [say yo define .5 to be rounded up]

--
Evertjan.
The Netherlands.

 Evertjan. 10-13-2007 10:06 AM

Re: FAQ Topic - How do I convert a Number into a String with exactly 2 decimal places?

Evertjan. wrote on 13 okt 2007 in comp.lang.javascript:

> FAQ server wrote on 13 okt 2007 in comp.lang.javascript:
>
>> Rounding of x.xx5 is uncertain, as such numbers are not
>> represented exactly.

>
> I do not see that:
>
> n = 212345.50
>
> // [say yo define .5 to be rounded up]
>

Sorry, please disregard, I pressed the "send" too fast.

I will come back on this, have to go now.

--
Evertjan.
The Netherlands.