0

10 進数を分割するにはどうすればよいですか? 変数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数値の整数部分と小数部分を分けるために使用しないでください。

たとえば、分割 (および 70 をセントに変換) すると、同じ数値であっても10.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);

最後の行は、元の数値が負の場合でも、セントの数値が正であることを保証します。

~~演算子は、実際には演算子の 2 つのインスタンスであり、~ビット単位の「not」演算子であり、数値を 32 ビット符号付きの値に切り捨て、小数部分を破棄します。2 回ひっくり返すと元の数が得られますが、端数はありません。

これは、「ゼロに丸める」結果を得る最も簡単な方法Math.floor()です-11-10.70

于 2012-05-31T13:07:28.270 に答える