如何阻止parseFloat()从零中删除到十进制右边

Chr*_* K. 19 javascript parsing

我有一个函数,我用来从字符串中删除不需要的字符(定义为货币符号)然后将值作为数字返回.返回值时,我正在进行以下调用:

return parseFloat(x);

我遇到的问题是,当x =="0.00"时,我希望得到0.00(带有两位小数的浮点数).我得到的只是0.

我也尝试过以下方法:

return parseFloat(x).toFixed(2);

并且仍然只是0回来.我错过了什么吗?任何帮助将不胜感激.

谢谢!!

Ted*_*opp 14

parseFloat()将字符串转换为浮点数.这是二进制值,而不是十进制表示,因此小数点右边的零数概念甚至不适用; 这一切都取决于它如何格式化回字符串.关于toFixed,我建议将浮点数转换为数字:

new Number(parseFloat(x)).toFixed(2);
Run Code Online (Sandbox Code Playgroud)

  • 如果 x = `2.00` 或 `'2.00'`,您仍然会得到字符串表示形式 `'2.00'`。 (2认同)

Vic*_*tor 10

这应该工作:

return parseFloat(x).toFixed(2);
Run Code Online (Sandbox Code Playgroud)

你可以通过在firebug中运行它来测试它:

var x = '0.00';
alert(parseFloat(x).toFixed(2));
Run Code Online (Sandbox Code Playgroud)

  • 这会返回一个字符串,而不是一个数字 (7认同)
  • @JCOC611它总是返回一个字符串. (2认同)
  • @TabethaMoe - 当然可以。OP 保持“小数点右侧尾随零”的唯一方法是使用字符串表示形式。其他没有任何意义。 (2认同)

Ger*_*ári 5

简单:

function decimalPlaces(float,length) {
  ret = "";
  str = float.toString();
  array = str.split(".");
  if(array.length==2) {
     ret += array[0] + ".";
     for(i=0;i<length;i++) {
        if(i>=array[1].length) ret += '0';
        else ret+= array[1][i];
     }
  }
  else if(array.length == 1) {
    ret += array[0] + ".";
    for(i=0;i<length;i++) {
       ret += '0'
    }
  }

  return ret;
}

document.write(decimalPlaces(3.123,6));
Run Code Online (Sandbox Code Playgroud)