Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将浮点转换为至少有一位小数的字符串(javascript)_Javascript - Fatal编程技术网

将浮点转换为至少有一位小数的字符串(javascript)

将浮点转换为至少有一位小数的字符串(javascript),javascript,Javascript,让我给你举个例子 var a = 2.0; var stringA = "" + a; 我将得到:stringA=“2”,但我想要:stringA=“2.0” 但是,我不想失去精度,因此如果: var b = 2.412; var stringB = "" + b; 我想获得标准:stringB=“2.412” 这就是为什么toFixed()在这里不起作用的原因。除了像这样显式检查整数之外,还有其他方法吗 if (a % 1 === 0) return "" + a + ".0";

让我给你举个例子

var a = 2.0;
var stringA = "" + a;
我将得到:
stringA=“2”
,但我想要:
stringA=“2.0”

但是,我不想失去精度,因此如果:

var b = 2.412;
var stringB = "" + b;
我想获得标准:
stringB=“2.412”

这就是为什么
toFixed()
在这里不起作用的原因。除了像这样显式检查整数之外,还有其他方法吗

if (a % 1 === 0)
    return "" + a + ".0";
else
    return "" + a;
如果a是你的花车怎么办

 var a = 2.0;
    var b = (a % 1 == 0) ? a + ".0" : a.toString();
已编辑:添加引用和更改以允许。0

如果您想将
.0
附加到数字到字符串转换的输出中,并保持非整数的精度,只需测试整数并对其进行特殊处理即可

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

Input  Output
3      "3.0"
3.4567 "3.4567"

这是一个内置的功能

var a = 2;
var b = a.toFixed(1);

这将数字四舍五入到小数点后一位,并以小数点后一位显示,即使它是零。

对于其他看这个问题的人,我刚刚想到,要将浮点转换为至少有
n
小数点的字符串,可以写:

function toAtLeastNDecimalPlaces(num, n) {
    normal_conv = num.toString();
    fixed_conv = num.toFixed(n);
    return (fixed_conv.length > normal_conv.length ? fixed_conv : normal_conv);
}
请注意,根据,
toFixed()
最多可用于20位小数。因此,上述功能将不适用于
n>20


此外,上述函数对科学记数法没有任何特殊处理(但本线程中的任何其他答案也没有处理)。

此解决方案试图平衡简洁性和可读性

const floatString = (n) => Number.isInteger(n) ? n.toFixed(1) : n.toString();

这不能解决问题。如果a=2.0,我的字符串将是“2”,而不是“2.0”。事实上,我提出了同样的问题(使用模来检查整数)是的,我回到了你的答案,并相应地做了。这肯定比我建议的要干净得多:)谢谢你,我实际上不知道是
isInteger()
还是模是“更干净的”,但这两种方法都适用于浮点值,您必须将整数视为一种特殊情况,对于那些喜欢一行的人来说:
const toNumberString=n=>`${n}${Number.isInteger(n)?“.0”:“}”
downvote,因为要求明确指出,当存在小数点时,精度不会丢失。toFixed(1)将其强制到小数点后一位。不过仍然非常有用,所以我不会投反对票