don't compute that number in integer arithmetic and then cast it to
double!
git-svn-id: svn://svn.tartarus.org/sgt/agedu@9025
cda61777-01e9-0310-a592-
d414129be87e
"%#.1f Pb", "%#.1f Eb", "%#.1f Zb", "%#.1f Yb"
};
int shift = 0;
-
- while (size >= 1024 && shift < lenof(fmts)-1) {
- size >>= 10;
+ unsigned long long tmpsize;
+ double denominator;
+
+ tmpsize = size;
+ denominator = 1.0;
+ while (tmpsize >= 1024 && shift < lenof(fmts)-1) {
+ tmpsize >>= 10;
+ denominator *= 1024.0;
shift++;
}
- *display_size = (double)size;
+ *display_size = size / denominator;
*fmt = fmts[shift];
}