数値データ
- 更新日2025-08-27
- 16分で読める
LabVIEWでは、数値データを浮動小数点数、固定小数点数、整数、符号なし整数、複素数で表記します。
一部のデータタイプでは、詳細な構成オプションを設定できます。たとえば、浮動小数点データ (複素数を含む) に測定の物理単位を関連付けたり、固定小数点データのエンコードおよび範囲することができます。
数値単位を浮動小数点数に関連付ける
浮動小数点表記法を持つ数値制御器または表示器には、メートルまたはキロメートル/秒などの測定の物理単位を関連付けることができます。
制御器の単位は、単位ラベルと呼ばれる独立した付属ラベルに表示されます。単位ラベルを表示するには、制御器を右クリックし、ショートカットメニューから表示項目»単位ラベルを選択します。単位ラベルを編集するには、単位ラベルを右クリックして、ショートカットメニューから単位文字列の作成を選択します。
LabVIEWで単位ラベルを表示する場合、メートルはm、フィートはft、秒はsなど、標準の省略形を使用して単位を入力できます。
| メモ フォーミュラノードでは単位を使用できません。 |
単位およびタイプ指定チェック
オブジェクトに単位を関連付けた場合は、その単位と互換性のある単位を持つオブジェクトにのみ配線できます。LabVIEWでは、タイプ指定チェックを使用して単位間に互換性があるかどうかを確認します。単位に互換性がない2つのオブジェクトを配線すると、エラーが返されます。たとえば、単位タイプがマイルのオブジェクトを、単位タイプがリットルのオブジェクトに配線するとエラーが返されます。これは、マイルが距離の単位、リットルが量の単位であるためです。
以下のVIは、単位に互換性があるオブジェクトの配線を示しています。このVIでは表示器の単位がキロメートルであるため、LabVIEWは距離表示器のスケールを自動的に変更して、メートルではなくキロメートルを表示します。
以下のVIでは、距離の単位が秒であるため、エラーが発生しています。エラーを修正するには、前のVIで示したように、秒をキロメートルなどの距離の単位に変更します。
VIおよび関数には単位に対してあいまいなものもあります。これらのVIおよび関数は、単位を持つ他の端子では使用できません。たとえば、「インクリメント」関数は単位に対してあいまいです。距離単位を使用する場合、「インクリメント」関数は、1メートル、1キロメートル、あるいは1フィート加算するのか区別できません。このあいまいさのため、「インクリメント」関数や単位に関連付けられたデータを持つ値を増減する他の関数を使用できません。
この例のようなあいまいさを回避するには、以下のブロックダイアグラムに示すように、適切な単位を持つ数値定数と「和」関数を使用して、独自の増分単位の関数を作成します。
固定小数点データタイプ
固定小数点データタイプは、一連の有理数を2進数 (ビット) で表現する数値データタイプです。データの精度と範囲が変化することが許容される浮動小数点データタイプとは異なり、固定小数点数では、整数部と小数部を表すのに常にそれぞれに指定されたビット数を使用するように構成することができます。
| メモ バイナリは基数が2なので、固定小数点データタイプで表現する有理数の分母は、2の累乗で約分できなければなりません。 |
浮動小数点表記のような動的な範囲を必要としない場合、または浮動小数点演算をサポートしないターゲットを扱う場合は、固定小数点データタイプを使用します。
| メモ (FPGAモジュール) FPGAターゲットで固定小数点データタイプを使用する方法の詳細については、固定小数点データタイプを使用するを参照してください。数値データタイプの使用を評価して、どのデータタイプが設計に最適かを決定します。 |
有理数を固定小数点データタイプで表現する
固定小数点数は、既定の数の整数と小数ビットで表現されます。整数ビットは2進小数点の左側に、小数ビットは右側に表示されます。2進小数点は、10進小数点と同じですが、使用ビット数を指定することで位置を固定できます。
たとえばLabVIEWでは、有理数0.5を、総ビット数8、うち4個を整数ビットとして固定小数点数を表現できます。
| 有理数 | 固定小数点での表現 |
|---|---|
| 0.5 | 0000.1000 |
また、同じ有理数を、総ビット数16、うち8個を整数ビットとして固定小数点数を表現することもできます。
| 有理数 | 固定小数点での表現 |
|---|---|
| 0.5 | 00000000.10000000 |
浮動小数点数では演算時に整数ビットと小数ビットの数を変更できるのに対し、固定小数点数では変更できません。つまり、2進小数点は、浮動小数点数では移動 (浮動) 可能です。
| メモ 有理数を固定小数点数で表現する場合、使用するビット数が指定されていないと、データ損失がないように自動的にビット数が調整されます。LabVIEWでは、64ビット以上の数字を扱うことはできません。 |
固定小数点数を構成する
データタイプを固定小数点表記に設定するには、オブジェクトを右クリックして、ショートカットメニューから表記法を選択して、オブジェクトのデータタイプを変更します。固定小数点数のエンコーディングを構成できます。固定小数点のオーバーフローステータスを含むかどうか、また数値関数でどのように固定小数点数のオーバーフローおよび丸め込みの状態を処理するかを指定します。固定小数点数を構成するには、定数、制御器、表示器、数値関数を右クリックして、ショートカットメニューからプロパティを選択して、数値プロパティ、数値定数プロパティ、数値ノードプロパティダイアログボックスを表示します。
エンコーディング
数値が特定のビットサイズに適合するようにするには、固定小数点数のバイナリエンコーディングを指定します。
- 符号付き―固定小数点データが符号付きかどうかを決定するオプション。符号付きを選択すると、データを表すビット列の最初のビットは必ず符号ビットとなります。
- 符号なし―固定小数点データが符号なしかどうかを決定するオプション。
- ワード長―LabVIEWで固定小数点データの予想されるすべての数値を表すために必要なビットの総数です。LabVIEWが受け入れる最大ワード長は64ビットです。特定のターゲットでは、ワード長が64ビット未満に限定される場合があります。ターゲットでワード長が制限を越える固定小数点数データが使用されているVIを開くと、ワイヤが壊れた状態で表示されます。ターゲットで利用可能な最大ワード長は、ターゲットのドキュメントで確認してください。
- 整数ワード長―LabVIEWで固定小数点データの予想されるすべての数値を表すために必要とされる整数ビット数。または最上位ビットの左右のどちらかにある2進小数点の位置から最上位ビットまでのシフトビット数です。整数ワード長は、ワード長よりも大きくてもよく、負の数または正の数にできます。
これらの構成は、LabVIEWはカーソルを固定小数点データの上に移動すると、詳細ヘルプウィンドウに以下の形式で表示します。
<エンコーディング, ワード長, 整数ワード長>
以下に例を示します。
<s, 16, 8>は、16ビット、8整数ビットの符号付き数値です。以下の図は、ワード長が16、整数ワード長が8の符号付き数値を示しています。
| 1 | ワード長 (16ビット) |
| 2 | 整数ワード長 (8ビット) |
| 3 | 符号ビット |
| 4 | 2進小数点 |
倍長整数または負の整数ワード長
整数ワード長がワード長よりも大きい場合、ワード長を超える整数ビットは切り捨てられます。以下の図は、ワード長が8、整数ワード長が10の数値を示しています。
| 1 | ワード長 (8ビット) |
| 2 | 整数ワード長 (10ビット) |
| 3 | 切り捨てられる整数ビット |
| 4 | 2進小数点 |
整数ワード長が負の数の場合、すべての整数ビットと、2進小数点から負の数と等しい長さまでの小数ビットが切り捨てられます。以下の図は、ワード長が8、整数ワード長が-2の数値を示しています。
| 1 | ワード長 (8ビット) |
| 2 | ワード長 - 整数ワード長 (8ビット - 2ビット) |
| 3 | 切り捨てられる小数ビット |
| 4 | 2進小数点 |
範囲
LabVIEWは、固定小数点のエンコーディングに指定した値に従って、固定小数点の範囲とΔを計算します。
- 最小値―固定小数点データ範囲の最小値を設定します。
- 最大値―固定小数点データ範囲の最大値を設定します。
- Δ値―指定範囲内での数値間の増分値です。
これらの構成は、LabVIEWでカーソルを固定小数点データの上に移動すると、詳細ヘルプウィンドウに以下の形式で表示されます。
[最小値, 最大値]: Δ値
以下に例を示します。
[-4, 4]:1では、最小値が-4、最大値が4、Δ値が1となります。
固定小数演算
ワード長が指定された固定小数点数に対して演算を行う場合、2進小数点の位置はVIの実行前に指定した位置から移動しません。一方、浮動小数点数に対する演算では、2進小数点または10進小数点の位置が実行時に演算操作により移動することがあります。演算の結果得られた数値のワード長が、固定小数点に対して指定されているワード長よりも大きい場合、結果データの一部が失われる可能性があります。
LabVIEWでは、数値関数の出力値のワード長は、データ損失を防ぐために可能な限り自動的に調整されます。しかし、出力値の表現に必要なワード長が、指定した最大長またはLabVIEWにおける最大ワード長である64ビットを超える場合、データ損失は回避できません。数値関数の出力設定を構成するには、関数を右クリックしてショートカットメニューからプロパティを選択し、数値ノードプロパティダイアログボックスを開きます。
オーバーフローと丸め込み
オーバーフローと丸め込みは、固定小数点数に対して演算操作を行った場合、または「固定小数点に変換」関数によって数値データを固定小数点数データに変換した場合に発生することがあります。数値関数の出力の構成は、固定小数点データのオーバーフローや丸め込みが極力回避されるように自動的に調整されます。ただし、状況によってはオーバーフローや丸め込みを回避できない場合があります。
たとえば、固定小数点値を「和」、「差」、「積」、「二乗」などの数値関数に配線した場合は、デフォルトでは結果の値が問題なく表示されるように、出力値のワード長が自動的に増加します。浮動小数点値の場合でも、同様な調整が行われます。ただし、出力値の表示に必要なワード長が、LabVIEWで受け入れ可能な最大値やプロパティで指定された最大値やを越える場合は、オーバーフローや丸め込みが発生します。LabVIEWが受け入れる最大ワード長は64ビットです。
この他、表示不可能なタイプサイクルと値が基数を2とする数である場合にも、オーバーフローや丸め込みが発生することがあります。
オーバーフロー
オーバーフローは、演算の結果得られる値が、出力タイプの設定で表示できる値の範囲を超えた場合に発生します。オーバーフローの処理方法は、以下のオーバーフローモードから選択できます。
- 飽和―値が出力タイプでの希望する範囲の最大値を超える場合、LabVIEWは値を指定された最大値に強制変換または丸め込みます。値が出力タイプで指定されている最小値より小さい場合は、値は指定された最小値に強制されます。
- 切り捨て―値が出力タイプで指定されている範囲外の場合、LabVIEWは出力タイプの希望する範囲内に値の最上位ビットを破棄します。このオプションでは、出力値が指定するエンコーディングに一致する必要があります。LabVIEWはエンコーディングに一致するように自動的に範囲を設定するため、このオプションを選択すると、必要な範囲を指定できません。
| メモ 通常、FPGAでは、飽和モードを使用する場合、ハードウェアリソースの追加が必要となります。 |
オーバーフローを使用するには、固定小数点数にオーバーフローステータスが含まれるよう構成します。固定小数点数にオーバーフローステータスが含まれるよう構成すると、オーバーフローが発生した場合にその固定小数点がオーバーフローした結果であることを記録するための追加格納スペースが割り当てられます。オーバーフローステータスを含むように固定小数点数を構成すると、固定小数点制御器、定数、表示器でオーバーフローステータスLEDを表示できます。このLEDは、固定小数点数のオーバーフローステータスがTRUEの場合に点灯します。また、「固定小数点のオーバーフロー?」関数で固定小数点値のオーバーフローステータスを設定することもできます。固定小数点値のオーバーフローステータスを処理するには、固定小数点関数を使用します。
| メモ LabVIEWは固定小数点数のアンダーフロー状態を確認しません。 |
固定小数点数の比較に「比較」関数を使用する場合、オーバーフロー状態は無視され、数値のみが比較されます。たとえば、「等しい?」関数でTRUEのオーバーフロー状態の固定小数点値1.5を、オーバーフロー状態のない固定小数点値1.5と比較する場合、TRUEが返されます。
数値関数の出力設定を構成するには、関数を右クリックしてショートカットメニューからプロパティを選択し、数値ノードプロパティダイアログボックスを開きます。このダイアログボックスで、オーバーフローと丸め込みの処理方法を設定できます。
丸め込み
丸め込みは、入力値や演算の結果の値の精度が出力タイプの精度よりも高い場合に発生します。入力値は、出力タイプと同じ精度に強制的に変換されます。たとえば、出力タイプではsとtが連続した値として表示されるとします。演算の結果として得られる値がxであり、xがsとtの間にあたる場合 (s<x<t)、出力タイプはxを正確に表示できないため丸め込みが発生します。
丸め込みの処理方法は、以下の丸め込みモードから選択できます。
- 切り下げ―出力タイプで表現可能な最も近い値に値を切り下げます。値の最下位ビットは破棄されます。この丸め込みモードでは、最良のパフォーマンスが得られますが、出力値の精度が低下します。たとえば、出力値 x が連続した値である s および t の間にある場合 (s < x < t)、x は s と同じ値に設定されます。
- 四捨五入-中間値は切り上げ―出力タイプで表現可能な最も近い値に値を切り上げます。このオプションでは、丸め込む値が正確に2つの有効な値の中間にある場合、より大きい値に丸め込まれます。出力値は、自動的に最下位ビットの半分の値が加算された後切り捨てられます。この丸め込みモードでは、なるべく正確な出力値が得られますが、パフォーマンスへの影響がより大きくなります。たとえば、出力値xが連続した値であるsおよびtの間にある場合 (s < x < t)、xはsまたはtのうち近い方に設定されます。xがsとtの中央値の場合、tが選択されます。
- 四捨五入-最下位ビットを特定―出力タイプで表現可能な最も近い値に値を切り上げます。このオプションでは、丸め込む値が正確に2つの有効な値の中間にある場合、丸め込まれた後最下位ビットとなる値のビットによって値が決定されます。ビットが0の場合、値は出力タイプが表現できる2つの値のうちより小さい値に丸め込まれます。ビットが0以外の場合、値は2つの値のうち大きい値に丸め込まれます。この丸め込みモードでは、最も正確な出力値が得られますが、パフォーマンスへの影響が最も大きくなります。このモードでは、中間値を切り上げるモードで複数の丸め込み操作を実行する場合に発生するより大きい値へのバイアスが緩和されます。これはデフォルトの丸め込みモードです。たとえば、出力値xが連続した値であるsおよびtの間にある場合 (s < x < t)、xはsまたはtのうち近い方に設定されます。xがsとtの中央値の場合、丸め込み後の最下位ビットが0のときにsが選択されます。丸め込み後の最下位ビットが0以外ならばtを選択します。
| メモ どの丸め込みモードもパフォーマンスに対する影響は微細です。ただし、FPGAなどのターゲットでオーバーフローを処理するVIを実行する場合は、パフォーマンスへの影響が大きくなる可能性があります。 |
FPGAでのパフォーマンスの影響に関する詳細については、固定小数点データタイプを使用するを参照してください。