无法将javascript字符串转换为数字

时间:2014-11-21 20:26:45

标签: javascript

我有一个脚本使用parseFloat分配变量,如下所示:

var vendorCost = parseFloat(vendorSearchresults[0].getValue('vendorcost')).toFixed(2);

我认为这会使变量成为一个数字。但是,当我用typeof检查它时 - 它会将其报告为字符串。我的解决方案如下:

vendorCost = parseFloat(vendorCost);

哪个有效,但是我在编码时试图提高效率,并且想要了解为什么在为其分配数字时不会使vendorCost成为数字?有没有办法让第一个语句使vendorCost成为一个数字而不需要第二个语句?提前谢谢。

更新 - 只是想我应该提到我在没有使用.toFixed的情况下遇到完全相同的问题 -

    var vendorLandedCost = parseFloat(vendorSearchresults[0].getValue('custentity_asg_landed_cost','vendor'));
    vendorLandedCost = parseFloat(vendorLandedCost);

2 个答案:

答案 0 :(得分:1)

最后一次toFixed()调用将第一个parseFloat的结果转换为字符串。

看起来你需要将数字四舍五入到小数点后两位,这就是你使用parseFloat调用的原因。你可以这样做:

vendor_cost = Math.round(parseFloat(vendorSearchresults[0].getValue('vendorcost')) * 100) / 100

答案 1 :(得分:0)

好吧,Number.toFixed返回字符串,因为它是一个数据表示函数。

请参阅the docs