Вопрос по jquery, javascript – сплит не работает

0

Как разделить десятичные числа? Переменная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, он не на месте. Hunter McMillen
Сплит работает просто отлично -jsfiddle.net/dLPj3 Shawn Chin
Если вы хотите целую часть, просто сделайтеMath.floor(bidnumber), Если вы хотите дробь, сделайтеbidnumber % 1, Если вы действительно хотите оба в массиве, это легче сделать[Math.floor(bidnumber), bidnumber % 1]. Darth Egregious

Ваш Ответ

3   ответа
1

Вы не должны использоватьsplit разбить целую и дробную части числа.

Например,10.70 когда разделение (и преобразование 70 в центы) даст другой ответ10.7 even though they're the same 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

Error: User Rate Limit ExceededMath.floor()Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededbidnumber % 1.
Error: User Rate Limit Exceededn % 1Error: User Rate Limit Exceeded
1
  • The attribute value is already a string, so you don't have to convert it to a string.
  • The split method doesn't put the array back in the variable.
  • The substr method doesn't put the new string back in the variable.

Так:

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;
9

Вы забыли вернуть массив изsplit функция:

bidnumber = bidnumber.toString().split('.');

Похожие вопросы