$( )置換 - 数値から文字列への変換

$( )置換

数値を文字列に変換するには$()置換表記を使用します。 この表記は、与えられた数式を実行時に評価し、その結果を文字列に変換して置き換えます。

この表記は、次のような構成で使用します。

$(expression [, format])

ここで、expression は数式ですが、通常、1つの数値または変数(データセットまたはデータ範囲)であり、 format は、Originの出力形式またはC言語形式にすることができます。

expression がデータセットまたは範囲変数の場合、スケール区切りの値リストを返します。(利用可能なバージョン: 9.1 SR0以降)

例:

//データセットを定義
dataset ds1 = {1, 3, 5, 7};
//置換表記の結果を出力
type $(ds1);//ANS:1 3 5 7;
type $(ds1, *2);//ANS: 1.0 3.0 5.0 7.0

/第1列の値を範囲変数rxに渡す
range rx = col(1);
//置換表記の結果出力
type $(rx);

デフォルトフォーマット

角括弧は、format$() 置換表記に対して任意の引数であることを示します。 もし、format を除外すると、Originは@SDシステム変数(デフォルト値は14)により指定された桁または有効桁数でexpressionを実行します。 例えば、

double aa =  3.14159265358979323846;
type $(aa);    // ANS: 3.1415926535898

Originフォーマット

Originは、ワークシートまたはテキストラベルの数値のカスタムフォーマットをサポートしています。数値フォーマットオプションの全リストは、Reference Tables: Origin Formatsを参照してください。

フォーマット 説明
*n n 桁の有効桁数を表示
.n n 桁の小数桁数を表示
*n* n 桁の有効桁数を表示, 桁数以下の0を消去
.n, カンマ区切り記号を使用して、小数点以下n桁を表示(US, UK, など)
E.n 工学表記でn 桁の小数桁数を表示します。
S*n 1E3の形式の科学表記で n 桁の有効桁数を表示
D<format> カスタム日付形式を表示します。ここで、<format> は、列プロパティ表示リストの先頭から始まる、フォーマットのインデックス番号(0からカウント)または、これらの日時形式指定子を使用して作成された文字列のいずれかです。下のサンプルをご覧ください。
T<フォーマット> カスタム時間形式を表示します。ここで、<format> は、列プロパティ表示リストの先頭から始まる、フォーマットのインデックス番号(0からカウント)または、これらの時間形式指定子を使用して作成された文字列のいずれかです。下のサンプルをご覧ください。
#n 整数値をn桁で表示、必要な場所で、0を付加
<prefix>##<sep>###<suffix> 指定したセパレータ(<sep>)を桁の間に表示。オプションで接頭語(<prefix>) や接尾語(<suffix>)を追加1つの記号は1桁を意味します。最後のは単位桁を参照します。最初と2番目の部分にある#の両方の数は、変化できます。
# #/n n を分母として指定して、数値を小数として丸めて表示します。分子と分母はスラッシュ/で区切られます。分子の桁数は調整されます。
D[<space>]M[S][F][n] 度数をDegree° Minute' Second"の形式で表示します。ここで、1度= 60分、1分= 60秒です。それぞれを区切るためにスペースを挿入します。N は、分数の小数点以下の桁を示します。Fは、記号なしで区切り記号としてスペースを挿入して次数を表示します。


サンプル:

xx = 1.23456;
type "xx = $(xx, *2)";  // ANS: 1.2
type "xx = $(xx, .2)";  // ANS: 1.23

yy = 1.10001;
type "yy = $(yy, *4)";   // ANS: 1.100
type "yy = $(yy, *4*)";  // ANS: 1.1

zz = 203465987;
type "zz = $(zz, E*3)";  // ANS: 203M 
type "zz = $(zz, S*3)";  // ANS: 2.03E+08

type "$(date(7/20/2009), D1)";  // ANS: Monday, July 20, 2009

type "$(date(7/20/2009), Dyyyy'-'MM'-'dd)";  // ANS: 2009-07-20

type "$(time(14:31:04), T4)";   // ANS: 02 PM

type "$(time(14:31:04), Thh'.'mm'.'ss)";  // ANS: 02.31.04

type "$(45, #5)";    // ANS: 00045

type "$(56000, ##+###)"; //ANS: 56+000

type "$(4000, ##+##M)"; //ANS: 40+00M

type "$(10000, .0,)"; //ANS: 10,000

//display a fraction in different formats:
AA = 0.334;
type "AA = $(AA, # ##/##)"; //ANS: AA = 1/3
type "AA = $(AA, # #/8)"; //ANS: AA = 3/8

//display degree value in different formats
DD = 37.34255;
type "DD = $(DD, DMS)"; //ANS: DD = 37°20'33"
type "DD = $(DD, D MS)"; //ANS: DD = 37° 20' 33"
type "DD = $(DD, DMSF)"; //ANS: DD = 37 20 33
type "DD = $(DD, DMF1)"; //ANS: DD = 37 20.6

C言語の形式

$() 置換の format の部分は、C言語形式のステートメントもサポートします。

オプション 符号の有無 出力 入力範囲
d, i 符号付き 整数値(小数の整数部分または整数値) -2^31 -- 2^31 -1
f, e, E, g, G 符号付き 十進数、科学表記、十進または科学表記 +/-1e290 -- +/-1e-290
o, u, x, X UNSIGNED 8進数、整数、16進数、16進数(大文字) -2^31 -- 2^32 - 1

Note:最後のカテゴリでは、負の値は2つの成分で表されます。

ここにLabTalkで使用するCコードのサンプルがいくつかあります。

double nn = -247.56;
type "Value: $(nn,%d)";   // ANS: -247

double nn = 1.23456e5;
type "Values: $(nn, %9.4f), $(nn, %9.4E), $(nn, %g)";
// ANS: 123456.0000, 1.2346E+005, 123456

double nn = 1.23456e6;
type "Values: $(nn, %9.4f), $(nn, %9.4E), $(nn, %g)";
// ANS: 123456.0000, 1.2346E+006, 1.23456e+006

double nn = 65551;
type "Values: $(nn, %o), $(nn, %u), $(nn, %X)";
// ANS: 200017, 65551, 1000F

OriginとC言語の形式の組合せ

Originは、C言語形式の指定子を使って、ES の形式の使用をサポートしています。 例えば、

xx = 1e6;
type "xx = $(xx, E%4.2f)";  // ANS: 1.00M

負の値の表示

type コマンド(およびその他)のコマンド解析は、オプションスイッチ指示子として - 記号を探します。変数Kに負の値を割り当て、typeコマンドを使ってその値を表す場合、引用符または括弧で置換表記を囲み - 記号を保護する必要があります。例えば、

K = -5;
type "$(K)"; // これは動作する

type ($(K)); // これも動作する
type $(K);   // これはtypeコマンドが -5オプションを持たないのでエラーとなる

変数の動的な名前付けと作成

置換表記$()は、代入演算子の右辺、左辺のいずれの側にあるかに関係なく、置換操作をし、値を与えます。

値2を持つ変数Aを作成します。

A = 2;

そして、この表記で値3を持つ変数A2を作成できます。

A$(A) = 3;

スクリプトウィンドウにA$(A) = または A2 = を入力して、それを確認します。


$()置換の他のサンプルについては、数値から文字列への変換をご覧下さい。