Let's skip positioning/css stuff and move along to data presentation. Usually there is a difference between the data we actually process and the data shown to users. So we have a variable containing the cost of some imaginary service, i.e. 4231.1578. This looks just like an old-school float representation - and in fact it is. So whats wrong with the users?... oops... I mean why is this representation not friendly to users?
Firstly, a common decimal delimiter for European countries is a comma, not a dot - we should respect it.
Secondly, humans do not process text the way machines - the larger the presented amount, the longer it takes to evaluate its value, or even the order of magnitude. Thats why you should provide thousands separators, all in all we get something like this: 4.231,1578
Now all it takes round the value a bit, we don't need so many decimal places. Below the code that converts your js floats to a formatted and readable string (val is the float value, while dec_places is the number of decimal places).
1 function round_repr(val, dec_places){
2 var tmp = Math.round((val*Math.pow(10, dec_places))).toString();
3 tmp = tmp.slice(0, tmp.length-dec_places) + ',' + tmp.slice(tmp.length-dec_places, tmp.length);
4 var int_length = tmp.length - dec_places - 1 - 3;
5 var i = int_length;
6 for (i=int_length; i>0; i-=3){
7 tmp = tmp.slice(0, i) + "." + tmp.slice(i,tmp.length);
8 }
9 return tmp;
10
11 }
~KR
No comments:
Post a Comment