我有一个字符串12345.00,我希望它返回12345.0。

我看了一下trim,但它看起来只是在修剪空白和切片,我不知道这是如何工作的。有什么建议吗?


当前回答

尝试使用toFixed

const str = "12345.00";
return (+str).toFixed(1);

其他回答

@杰森S:你可以用切片!你只需要确保你知道如何使用它。正数与开始,负数是相对于末端。js>“12345.00”.切片(0,-1)12345

对不起,我的写手,但帖子早些时候被标记为“jquery”。因此,不能在jQuery中使用slice(),因为slice(()是jQuery方法,用于使用DOM元素的操作,而不是子字符串。。。换言之,回答@Jon Erickson提出了非常完美的解决方案。

然而,您的方法将在简单的Javascript中使用jQuery函数。需要指出的是,由于上次在评论中的讨论,jQuery是JS的可更新扩展,而不是他自己的父级最著名的ECMAScript。

这里还存在两种方法:

作为我们的:

string。substring(from,to)as plus if“to”index null返回字符串的其余部分。因此:string.substring(from)正或负。。。

而其他一些-substr()-提供子字符串的范围,“length”只能为正:string.substr(开始,长度)

还有一些维护人员建议,最后一个方法string.substr(start,length)不起作用,或者对MSIE有错误。

使用子字符串获取_bar左侧的所有内容。但首先必须在字符串中获取_bar的instr:

str.substring(3, 7);

3是起点,7是长度。

如果要对浮点数进行通用舍入,而不是只修剪最后一个字符:

var float1 = 12345.00,
    float2 = 12345.4567,
    float3 = 12345.982;

var MoreMath = {
    /**
     * Rounds a value to the specified number of decimals
     * @param float value The value to be rounded
     * @param int nrDecimals The number of decimals to round value to
     * @return float value rounded to nrDecimals decimals
     */
    round: function (value, nrDecimals) {
        var x = nrDecimals > 0 ? 10 * parseInt(nrDecimals, 10) : 1;
        return Math.round(value * x) / x;
    }
}

MoreMath.round(float1, 1) => 12345.0
MoreMath.round(float2, 1) => 12345.5
MoreMath.round(float3, 1) => 12346.0

编辑:保罗指出,这似乎有一个内置函数。这种解决方案显然比我的干净得多。使用parseFloat后跟toFixed

对于像您这样的数字,我建议对子字符串执行以下操作:

console.log(parseFloat('12345.00').toFixed(1));

请注意,这实际上会将数字四舍五入,我认为这是需要的,但可能不是:

console.log(parseFloat('12345.46').toFixed(1));

if(str.substring(str.length - 4) == "_bar")
{
    str = str.substring(0, str.length - 4);
}