2014-10-04 151 views
0

当我尝试使用JavaScript转换分数时,我遇到了一个问题。 我需要将百分比值作为百分比值。 a = 0.0175 它应该显示为1.75%。我试图乘以100.但我得到了一些额外的分数加到右边 - 1.7500000000000002。我只需要1.75,而不是再添加到最后的零。JavaScript分数百分比

在此先感谢。

+0

使用'toFixed()'指定小数位数。 – Barmar 2014-10-04 00:16:37

回答

1

试试这个

var a = 0.0175 
var num = a * 100; 
var n = num.toFixed(2) 
+0

是否可以不指定长度?有时如果值为0.03425,则应该显示为3.425。我不想限制分数位置的数量,甚至不用零填充它。 – Dig 2014-10-04 00:56:46

+0

如果你不想要小数位数然后直接倍数两位小数,但一定要将它们转换成小数,这是因为JavaScript把每一个字符串都对待一个字符串 – 2014-10-04 01:11:27

0

乘法,圆形和除法:

// rounding to set precision or default precision = 3 
function roundToPrecision (value, precision) { 
    precision = (typeof precision !== 'undefined') ? precision : 3; 
    var mult = Math.pow(10, precision); 

    return Math.round(mult * value)/mult; 
} 

用法:

var zzz = roundToPrecision(123.1231232546); // 123.123 

var aaa = roundToPrecision(123.1231232546, 1); // 123.1 
+0

这么简单的结果 – njzk2 2014-10-04 00:32:16

+0

需要一个通用舍入函数 – 2014-10-04 00:34:09

+0

除'toFixed()'返回字符串 – 2014-10-04 00:39:59

0

试试这个:

function formatNum(n) { 
    return Math.round(a * 1e4)/1e2; 
} 

var a = 0.0175; 
var n = formatNum(a); // 1.75 

var b = 0.21; 
var m = formatNum(b); // 21 

它简单地乘以100 * 100,将结果舍入并再次除以100.结果因此仍然是一个数字而不是字符串,这与toFixed -approach一样。

+0

您还可以添加解释吗? – Robert 2015-06-04 11:07:52