.toFixed not for .0*

旧时模样 提交于 2020-06-07 09:23:07

问题


I have a few values:

var one = 1.0000
var two = 1.1000
var three = 1.1200
var four = 1.1230

and function:

function tofixed(val)
{
   return val.toFixed(2);
}

this return:

1.00
1.10
1.12
1.12 

LIVE

I want maximum size after dot - 2, but only if numbers after for != 0. So i would like receive:

1
1.1
1.12
1.12 

How can i make it?


回答1:


.toFixed(x) returns a string. Just parse it as a float again:

return parseFloat(val.toFixed(2));

http://jsfiddle.net/mblase75/y5nEu/1/




回答2:


Assuming you want String outputs

function myFixed(x, d) {
    if (!d) return x.toFixed(d); // don't go wrong if no decimal
    return x.toFixed(d).replace(/\.?0+$/, '');
}
myFixed(1.0000, 2); // "1"
myFixed(1.1000, 2); // "1.1"
myFixed(1.1200, 2); // "1.12"
myFixed(1.1230, 2); // "1.12"



回答3:


The "correct" way to do it is as follows:

return Math.round(num*100)/100;

If you want to truncate it to two decimal places (ie. 1.238 goes to 1.23 instead of 1.24), use floor instead of round.



来源:https://stackoverflow.com/questions/17555999/tofixed-not-for-0

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!