我是不是遗漏了什么?

var someNumber = 123.456;
someNumber = someNumber.toFixed(2);
alert(typeof(someNumber));
//alerts string

为什么.toFixed()返回一个字符串?

我想把这个数四舍五入到两位十进制数字。


当前回答

为什么不将结果乘以1,即

someNumber.toFixed(2) * 1

其他回答

为什么不将结果乘以1,即

someNumber.toFixed(2) * 1

可能来不及回答,但您可以将输出与1相乘以再次转换为数字,这里是一个例子。

Const x1 = 1211.1212121; const x2 = x1.toFixed(2)*1; console.log (typeof (x2));

为什么不使用parseFloat呢?

var someNumber = 123.456;
someNumber = parseFloat(someNumber.toFixed(2));
alert(typeof(someNumber));
//alerts number

下面是m93a提供的答案的一个稍微更实用的版本。

const toFixedNumber = (toFixTo = 2, base = 10) => num => {
  const pow = Math.pow(base, toFixTo)
  return +(Math.round(num * pow) / pow)
}

const oneNumber = 10.12323223

const result1 = toFixedNumber(2)(oneNumber) // 10.12
const result2 = toFixedNumber(3)(oneNumber) // 10.123

// or using pipeline-operator
const result3 = oneNumber |> toFixedNumber(2) // 10.12

我通过使用JavaScript的number()函数将其转换回数字来解决这个问题

var x = 2.2873424;
x = Number(x.toFixed(2));