将float转换为至少包含一个小数位的字符串(javascript)

Mic*_*hał 6 javascript

让我给你举个例子.

var a = 2.0;
var stringA = "" + a;
Run Code Online (Sandbox Code Playgroud)

我会得到:stringA = "2"但我想要:stringA = "2.0".

我不想丢失精度,所以如果:

var b = 2.412;
var stringB = "" + b;
Run Code Online (Sandbox Code Playgroud)

我想得到标准:stringB = "2.412".

这就是为什么toFixed()不能在这里工作.有没有其他方法可以做到,而不是明确检查这样的整数?:

if (a % 1 === 0)
    return "" + a + ".0";
else
    return "" + a;
Run Code Online (Sandbox Code Playgroud)

Nie*_*sol 14

这有一个内置功能.

var a = 2;
var b = a.toFixed(1);
Run Code Online (Sandbox Code Playgroud)

这会将数字四舍五入到小数点后一位,并将其显示为小数点后一位,即使它为零.

  • 被否决是因为要求明确指出存在小数位时精度不会丢失。toFixed(1) 强制其保留一位小数。 (2认同)
  • 不过,仍然非常有帮助,所以我不会投反对票 (2认同)

jdp*_*nix 7

如果要追加.0从Number到String转换的输出并保持非整数精度,只需测试一个整数并对其进行特殊处理。

function toNumberString(num) { 
  if (Number.isInteger(num)) { 
    return num + ".0"
  } else {
    return num.toString(); 
  }
}

Input  Output
3      "3.0"
3.4567 "3.4567"
Run Code Online (Sandbox Code Playgroud)