整数部と小数部の分離

[新着] Webテンプレートを仮オープンしました



0   名前: とし : 2007/08/28(火) 18:29  ID:svGrZpnd sub-.G
例えば123.045という数値があったとして
整数部:123と小数部:045を分離して取得したいのです
小数部は
前についてる0はそのまま、後ろの0は除いた文字列として
取得したいです
123.450という場合は小数部は45です
javascriptではこれをどのように分離させたらいいでしょうか?

なお数値は必ず小数部があるとは限りません
123だけの場合もありますのでその場合は小数部は空文字列""
として扱いたいです
自分で考えたのは数値を文字列に変換してsplit(".")
で2つの配列にわければ・・・というのは安易すぎますか?


1   名前: 匿名 : 2007/08/28(火) 18:29  ID:RRwY88x6 sub-Ax
いいと思いますが。
splitがすべてのブラウザに対応してるのか?って言われたら自信ないけどw

小数部がない場合は
返ってきた配列の長さが1になってるのでそのときは空文字にすればいいのでは。

(元が数値なので整数部は空文字にはならないと考えてていいんですよね?)

あとは、
文字列"***00"の末尾の"0"を削除するようなプログラムを考えればいいのでは...


余談ですが
文字列操作をする場合には正規表現を利用した方が複雑な処理に対応できるうえに
行数も格段に少なくできます。
ぜひ覚えてください。

2   名前: 匿名 : 2007/08/28(火) 18:29  ID:gaSskOiN sub-Cz
var r = /^([-+]?[0-9]*)\.?([0-9]*[1-9])?$/;

var a = r.exec (123.0450);
a[1];  // '123'
a[2];  // '045'

var b = r.exec (123.0);
b[1];  // '123'
b[2];  // undefined

3   名前: 匿名 : 2007/08/28(火) 18:29  ID:jSC9zi.K sub-y9
>>2
実行結果を出してくれているけど、そんな正規表現では末尾が0でマッチしない。
var r = /^([-+]?[0-9]*)\.?([0-9]*[1-9])?0*$/;

4   名前: 匿名 : 2007/08/28(火) 18:29  ID:jSMHbpud sub-Cz
>>3
Thanx! うっかりしてたーよ。

一覧へ戻る