JRS: In article <Xn********************@194.109.133.29>, dated Sun, 24
Oct 2004 20:19:12, seen in news:comp.lang.javascript, Evertjan.
<ex**************@interxnl.net> posted :
Ricardo Garcia wrote on 24 okt 2004 in comp.lang.javascript:
hi, i have some file size in bytes, and i want to get it in KB or MB,
with one decimal digit,
for example:
1268777 -> 1.2 MB
now i can have 1.210000...
my question is how do you can round this number properly, if i use
Math.round(number), i only get 1 MB
n = 1268777 // Bytes
n = Math.round(n/100000)/10 // 1.3 MegaBytes
BUT, perhaps you really want:
n = 1268777 // Bytes
n = Math.round(n*10/1024/1024)/10 // 1.2 MegaBytes
Those round to a multiple of 0.1 (give or take the resolution of an IEEE
Double); but rounding to a given number of digits is another matter
entirely.
The OP's wording calls for 1 MB to be represented as the string 1.0 MB.
The OP needs to read the newsgroup FAQ (via below), in particular Sec.
4.6; the first link of that leads to a variety of rounding code,
originated by several authors.
However, the example given implies truncation, for which (at least in
MSIE4) a RegExp might be used :
x = "000001.98765".match(/.*\.\d/) // 000001.9
x = 000001.98765 ; x = String(x).match(/.*\.\d/) // 1.9
though something must be done to ensure a decimal point and sufficient
digits.
x = 000001.00 ; x = String(x).match(/.*\.\d/) || x+".0" // 1.0
--
© John Stockton, Surrey, UK. ?@merlyn.demon.co.uk Turnpike v4.00 IE 4 ©
<URL:http://www.jibbering.com/faq/> JL/RC: FAQ of news:comp.lang.javascript
<URL:http://www.merlyn.demon.co.uk/js-index.htm> jscr maths, dates, sources.
<URL:http://www.merlyn.demon.co.uk/> TP/BP/Delphi/jscr/&c, FAQ items, links.