人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ActionScript2.0 で、perl でいうところの sprintf みたいなことをするにはどうしたらいいでしょうか。

var num:Number = 123.4567;
var str:String; // ここに "000123.456" のような文字列を入れたい。
// perl なら sprintf('%6.3f',$num);

●質問者: nev
●カテゴリ:インターネット ウェブ制作
✍キーワード:ActionScript2.0 Number Perl STR String
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● sukiyaki22
●1ポイント

http://www.game3rd.com/flash/action/

◎質問者からの返答

この回答は役に立ちません


2 ● GEN111
●50ポイント

AS はあまり知らない & AS2 の実行環境が無いのでそれらしい書き方ができませんが……

とりあえず小数部とパディングで桁数を合わせるだけ。16進数とかはなし。

function formatNum(fmt, num) {
 if (parseFloat(fmt) == NaN) return '' ;
 var r = num.toString().split('.') ;
 var l = fmt.split('.') ;

 if (parseInt(l[1]) > 0) {
 var flen = parseInt(l[1]) ;
 if (flen > r[1].length) for (var i = 0; flen - r[1].length; ++i) r[1] += '0' ;
 else if(flen < r[1].length) r[1] = r[1].substr(0, flen) ;
 }
 var p = '' ;
 var ilen = parseInt(l[0]) ;
 var slen = r[0].length + r[1].length + (r[1].length > 0) ;
 if (ilen > slen) for (var i = 0; i < ilen - slen; ++i) p += l[0].indexOf('0') == 0 ? '0' : ' ' ;

 return p + r[0] + (r[1].length > 0 && l[1] != 0? '.'+r[1] : '') ;
}

trace(formatNum('05.2', Math.acos(-1))) ;
◎質問者からの返答

ありがとうございました。

自前実装しないといけないということは、同等の関数はないということですかね…。


3 ● KUROX
●50ポイント

http://natecook.com/downloads/sprintf.html

ここにあるライブラリを使う。

ライセンス関係はわからないので調べてください。

◎質問者からの返答

ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ