Красивое округление можно получить через такую функцию:
roundNum = function(n,f){
f = f || 0;
return Number(n.toFixed(f).replace(/([0-9]+.[0-9]*)0+$/gi,'$1'));
}
roundNum( 130.004000, 3 ); // Возвратит 130.004
roundNum( 130.004000, 2 ); // Возвратит 130
roundNum( 130.004000, 10 ); // Возвратит 130.004
Данное округление убирает все лишние нули в конце цифры и возвращает цифровое значение. |
ага, а: roundNum( 0.00000001, 10 );
Возвратит: 1e-8 а: roundNum( '0.00000001', 10 ); Возвратит: TypeError: n.toFixed is not a function.... ![]()
roundNum = function(n,f){
f = f || 0;
return Number(n.toFixed(f).replace(/([0-9]+.[0-9]*)0+$/gi,'$1'));
}
alert( roundNum( 0.00000001, 10 ) ); // Возвратит 1e-8
alert( roundNum( '0.00000001', 10 ) ); // Возвратит TypeError: n.toFixed is not a function
к тому же, регулярка - явно кривая, ну и соответственно replace() |
Тогда уж, как-то так:
function roundNum(n,f){
f = f || 0;
return (+n).toFixed(f).toString().replace(/^((.*?)\.*0+)$/g,'$2');
};
alert( roundNum( 130.004000, 2 ) ); // Возвратит 130
alert( roundNum( 130.004000, 10 ) ); // Возвратит 130.004
alert( roundNum( 100.001000, 3 ) ); // Возвратит 100.001
alert( roundNum( 2200.002000, 2 ) ); // Возвратит 2200
alert( roundNum( 3000, 10 ) ); // Возвратит 3000
alert( roundNum( 0.00000004, 10 ) ); // Возвратит 0.00000004
alert( roundNum( '0.00000005', 10 ) ); // Возвратит 0.00000005
alert( roundNum( .00000006, 10 ) ); // Возвратит 0.00000006
alert( roundNum( '.00000007', 10 ) ); // Возвратит 0.00000007
alert( roundNum( '.00000008', 3 ) ); // Возвратит 0
alert( roundNum( 90000., 3 ) ); // Возвратит 90000
|
| Часовой пояс GMT +3, время: 01:03. |