数値を文字列に変換するには

◆PROCESSING 逆引きリファレンス

 カテゴリー:文字関連処理

数値を文字列に変換するには

【解説】
プログラムではよく、数値を文字列に変換したい場合があります。

PROCESSINGで数値を文字列に変換するには nf() 命令が便利です。

PROCESSINGはJavaをベースにした言語ですので、Javaと同じ方法で数値を文字列に変換する事も可能です。次の例は i が int の数値、sはString文字列の前提です。

【構文】
ここではPROCESSINGのnf()命令の構文を紹介します。

nf(  num, digits  ) ;
nf(  num, left, right  ) ;

【パラメータ】
num    float[]、int[]  または float、int: 変換対象となる数値
digits    int                          :  文字列全体の桁数 [右詰め。空いている桁は 0 で埋まる]
left         int                          : 小数点の左側の数値の桁数
right      int                          : 小数点の右側の数値の桁数

【戻り値】
numに単一の変数(int、float)を渡した場合はString
numに配列変数(int[]、float[])を渡した場合はString[]

【注意】
nfには引数を2つ持つものと3つ持つものがあります。文字列に変換する数値にはint型とfloat型があります。それらには許可された組み合わせがあります。

以下の表を参照してください(クリックすると拡大します)。
nf組み合わせ
数値を文字列に変換する際 digits を指定する事で、変換した桁数が digits  に満たない場合、左側に 0 を補った文字列を生成可能です。ただし変換対象の数値が負の場合は 、0 を補った上で、さらに左側にマイナス記号がつきます。ここは注意が必要です。

数値を文字列に変換した際に、左側に 0 を補わなくても良いなら(単純に文字列変換するなら)、digits に0を指定します。

floatの場合は、left と right を指定する事で、小数点の左と右を何桁にするかを指定可能です。足りない分は left の左端と right の右端に0が補われます。

この場合も負の値の場合は、leftで指定した桁数まで0を補った上で、さらにマイナス記号が付加されます。

ちなみに・・・ digits や left に負の値を与えた場合( nf( 10, -30 );  など)でもエラーにはならないようです。この場合は digits または left に0 を指定した場合と同じ動きをします。

一方、right に負の値を指定すると、小数点以下が無視された文字列が生成されます。
例: nf( 3.14,  0,  -1  );  ⇒  “3”

digits、left、right に負の値を与えることについて正規リファレンスは何も述べていませんが、あまり推奨はされないと思います。

【関連記事】
第4章:得点を表示する(その3)


●単純な数値を文字列に変換する例:

digits に 2 を指定していますので、変換対象文字が2桁になるまで左側に0を補った文字列を生成します。

ただし m は負の値なので、0を補った上でマイナス記号がつきます。

<出力サンプル>
nfサンプル

 

●小数点を持つ値を文字列に変換する例:

leftに 2 を指定していますので、小数点から左を2桁になるまで0を補います。
rigth には 3 を指定していますので、小数点から右は3桁になるまで0を補います。

ただし mp は負の値なので、0を補った上でマイナス記号がつきます。

<出力サンプル>
nfサンプル2

 

●整数配列を文字列に変換する例:

整数配列を文字列変換します。

digits に 2 を指定していますので、変換対象文字が2桁になるまで左側に0を補った文字列を生成します。

<出力サンプル>
nfサンプル3

●文字列変換速度対決:

PROCESSINGでは、nf() の他にも Javaと同じ命令で数値を文字列に変換可能だと説明しました。それでは、幾つもある数値⇒文字列変換で一番速いのはどれでしょうか・・・

気になったので調べてみました。
上記プログラムでコメントを記述した箇所に、

  • s = nf(i,0);
  • String.valueOf(i);
  • s = “” + i;
  • new Integer(i).toString();
  • Integer.toString(i);

の5つの方法をプログラムし、100万回数値を文字列変換させる処理を10回繰り返した場合の平均値を算出しました。

結論は・・・・ なんと s = “” + i;  が最速である事がわかりました。

nf();  の結果が突出して遅いのがわかります。何百万回も数値を文字列に変換しなければいけないような特殊な場合では、nf(); は遅いと覚えておきましょう(笑)。

ただし、それ以外の一般的な場合では、nf() は便利ですし、プログラムの可読性が高まりますので、使ったほうが良いと思われます。

<出力サンプル>
nf組み合わせ2

 


PROCESSING逆引きリファレンス一覧 へ戻る

本ページで利用しているアイコン画像は、下記サイト様より拝借しております。各画像の著作権は、それぞれのサイト様および作者にあります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)