[ad_1]
こんにちはチーム
私は、数字 (区切り記号のない数字のみ (例: 19,093 ではなく 19093)) を受け取り、javascript を使用して句読点を付けて、数値を読み取る標準的な方法を返す関数を作成するのに苦労しています。
私が試したこと:
JavaScript
<pre>function numberWithCommas(x) { return x.toString().replace(/\B(?<!\.\d*)(?=(\d{3})+(?!\d))/g, ","); } function test(x, expect) { const result = numberWithCommas(x); const pass = result === expect; console.log(`${pass ? "✓" : "ERROR ====>"} ${x} => ${result}`); return pass; } let failures = 0; failures += !test(0, "0"); failures += !test(100, "100"); failures += !test(1000, "1,000"); failures += !test(10000, "10,000"); failures += !test(100000, "100,000"); failures += !test(1000000, "1,000,000"); failures += !test(10000000, "10,000,000"); if (failures) { console.log(`${failures} test(s) failed`); } else { console.log("All tests passed"); }
解決策 1
ログを取ると10 数値の場合、返されるのは、整数部分として 1 を引いた数値の桁数です。
1 0.000 12 1.079 123 2.090 1234 3.091 12345 4.091 123456 5.092 1234567 6.092 12345678 7.092 123456789 8.092 1234567890 9.092
だから、あなたが Math.log10()[^] 必要な文字列の長さを簡単に計算できます。 次に、数字を抽出し、適切なコンマを使用して文字列に挿入するだけです。ループを使用するとうまくいきます。
考えてみれば、私の言いたいことがわかるでしょう。
すべての文化がコンマをセパレーターとして使用したり、「3 つのスペース」形式を使用したりするわけではないことに注意してください。たとえば、インドでは非対称形式「12,34,567」が使用されています。
解決策 2
* Convert number to string * e.g. 1234567 => "1234567" * Reverse it * => "7654321" * Insert comma after every third char * => "765,432,1" * Reverse it * => "1,234,567"
また
その場で行う:文字列に変換し、3文字を逆に数え続け、コンマを追加します
例: “1234567” => “1234,567” => “1,234,567”
[ad_2]
コメント