分裂不起作用
我如何拆分十进制数? 变量bidnumber
是10.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