JRS: In article <Xns958CE310B3517eejj99@194.109.133.29>, dated Sun, 24
Oct 2004 20:19:12, seen in news:comp.lang.javascript, Evertjan.
<(EMail Removed)> 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/jsindex.htm> jscr maths, dates, sources.
<URL:http://www.merlyn.demon.co.uk/> TP/BP/Delphi/jscr/&c, FAQ items, links.
