0

如何拆分十进制数?变量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提醒。我不明白我哪里出错了?

4

3 回答 3

9

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

bidnumber = bidnumber.toString().split('.');
于 2012-05-31T13:01:05.007 回答
1
  • 属性值已经是字符串,因此您不必将其转换为字符串。
  • 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;
于 2012-05-31T13:06:50.510 回答
1

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

例如,10.70当 split (并将 70 转换为 cents)时,10.7 即使它们是相同的number也会给出不同的答案。

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

于 2012-05-31T13:07:28.270 回答