about rounding a number

R

Ricardo Garcia

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


Thanks
 
E

Evertjan.

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
 
D

Dr John Stockton

JRS: In article <[email protected]>, dated Sun, 24
Oct 2004 20:19:12, seen in Evertjan.
Ricardo Garcia wrote on 24 okt 2004 in comp.lang.javascript:


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
 
E

Evertjan.

Dr John Stockton wrote on 25 okt 2004 in comp.lang.javascript:
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.

I don't quite see that, John.

Rounding 3 to 4 decimals is simply 3, not 3.0000,
because rounding is a mathematical concept and does not involve the string
representation of the result.
The OP's wording calls for 1 MB to be represented as the string 1.0 MB.

I agree, that is another view of the matter on hand entirely.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Staff online

Members online

Forum statistics

Threads
473,769
Messages
2,569,577
Members
45,052
Latest member
LucyCarper

Latest Threads

Top