分裂不起作用

我如何拆分十进制数? 变量bidnumber10.70

 var bidnumber = $(this).parent('div').siblings('.advert-details').find('tr:eq(3)').find('.advert-details-col-2').attr('data-bid'); bidnumber.toString().split('.'); var first = bidnumber[0]; var second = bidnumber[1]; alert(bidnumber[0]); second.substr(0, 1); var finalnumber = first + '.' + second; 

当我提醒bid[0] ,它应该警告10 ..而是提醒1 。 我不知道我哪里出错了?

您忘记从split函数返回数组:

 bidnumber = bidnumber.toString().split('.'); 
  • 属性值已经是一个字符串,因此您不必将其转换为字符串。
  • split方法不会将数组放回变量中。
  • substr方法不会将新字符串放回变量中。

所以:

 bidnumber = bidnumber.split('.'); var first = bidnumber[0]; var second = bidnumber[1]; second = second.substr(0, 1); var finalnumber = first + '.' + second; 

要不就:

 bidnumber = bidnumber.split('.'); bidnumber[1] = bidnumber[1].substr(0, 1); var finalnumber = bidnumber.join('.'); 

还要考虑将字符串解析为数字并将其舍入:

 var finalnumber = Math.round(parseFloat(bidnumber) * 10) / 10; 

您不应该使用split来拆分数字的整数和小数部分。

例如, 10.70分割(并将70转换为美分)将给出10.7的不同答案, 即使它们是相同的数字

 var bidnumber = 10.70; // ignoring your DOM query for now var whole = ~~bidnumber; // quick and nasty 'truncate' operator var cents = 100 * Math.abs(bidnumber - whole); 

最后一行确保即使原始数字为负数,分数也是正数。

~~运算符实际上是~运算符的两个实例,它是一个按位“非”运算符,它将任意数字截断为32位有符号值,丢弃任何小数部分。 翻转两次给出原始数字,但没有分数。

这是获得“向零舍入”结果的最简单方法,因为Math.floor()实际上会给-11输入-10.70