2016-08-15 7 views
2

私は可変長の数本のように見える何かを持っています上記のようになります。固定長小数を指定した数値だけでなく

0048.45

私はまた、彼らが必要な場合を除きので、小数点以下を表示したくない:

48

になる必要があります。

0048

私は一定の長さを得ることができたが、私は、小数点以下は、彼らが必要であった場合にのみ表示することができませんでした(私はしたくありません最後に2つの0を表示する)。私は、彼らが必要な場合にのみ、2つの小数点を追加するにはどうすればよい

trackPartLength = ("0000" + trackPartLength.toString()).slice(-4); // Convert to fixed length 

は、これは私が固定長を得た方法ですか?

編集:上記のコードで数値に小数点以下の桁数がある場合は、小数点が4桁以上移動していくつかの問題が発生するので、最初のアプローチが良いかどうかはわかりません。私は、可変固定接頭辞と小数点の長さの固定長関数を右にしようとしています。

+0

はここhttp://stackoverflow.com/questions/2686855/is-there-a-javascript-function-that-c​​an-pad-a-string-to-getを参照してください。 - 決定された長さ。 [toFixed](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed)もチェックしてください。 – elclanrs

+1

あなたが追加している先行ゼロは、 4桁の数字、または小数点の左側にすでに4桁以上ある場合でも追加しますか?言い換えれば、 '100.11'と' 1000.22'の入力に対して何が出力されるべきですか? – nnnnnn

答えて

1

これは動作するはずです:それは小数点以下、ゼロパッドを取得するためにtoFixedを使用して、後続の.00を削除

trackPartLength = ("0000" + trackPartLength.toFixed(2)).slice(-7).replace(/\.00$/, ''); 

。例:

48.4532  -> 0048.45 
48   -> 0048 
6.213  -> 0006.21 
12345  -> 2345 
1234.56789 -> 1234.57 

数は、小数点の前に4桁以上を持つことができる場合は、から先頭の数字を削除しないように、12345の例のように、あなたは、ゼロパディングとスライスを条件付きにすることもできます大きな数字。それは次のように行うことができる:

var tmp = trackPartLength.toFixed(2); 
trackPartLength = (tmp.length >= 7 ? tmp : ('0000' + tmp).slice(-7)).replace(/\.00$/, ''); 
+0

おそらく、 '/(\。00)| 0 $ /'(またはこれに類するもの)を使用して '0001.20'を使用するべきでしょうか。 – nnnnnn

+0

@nnnnnn OPが出力を '0001.2'または '0001.20'その場合。 「小数点以下を表示したくない」という表現は多少あいまいである(小数点以下や小数点以下をすべて意味するかどうかは不明だから)。 – Paulpro

+0

@nnnnnnしかし、その提案は良いですが、その特定の正規表現は '50'のような入力にも問題がある可能性があります。 '.replace(/\.00/、 '').replace(/(\.\d)0/、 '$ 1')のようなものが良いでしょう。 – Paulpro

関連する問題