数値型の活用ポイントを説明します。

数値型はさらにいくつかの属性を指定することができます。「モデルの定義>型>Wagbyで利用できる型」をお読み下さい。

後述する「入力ルール」や「出力フォーマット」などの設定は、入力項目の種類が「数字」の場合に有効です。通常、入力項目の種類は「数字」となっています。この設定を空白にすると、入力項目は文字列として扱われます。[詳細...]

図1 入力項目の種類

Wagbyでは、入力された値は「フィルタ」によって補正されます。フィルタにより「ゆれ」を自動的に補正することができます。この機能は自動的に設定されます。

数値型項目で選択できるフィルタは次のとおりです。

数字型

入力値を数値と判断して、数値型に変換するフィルタです。全角で入力された数値はすべて半角に統一します。

図2 入力フィルタ
フィルタはWebフォーム、アップロード更新、REST APIいずれも共通で利用されます。

カーソル位置

数値型項目では、登録・更新画面のカーソル位置は「右」になります。(変更することはできません。)いずれの型であっても、このルールが適用されます。[この制約を解除する...]

図3 カーソル位置

数字以外の文字のチェック

数値型項目の場合、数字以外の入力を行うとリアルタイムに入力チェックが適用されます。 全角文字も入力することはできません。(図4)

図4 全角の「1」を入力するとエラー

入力できる最大桁数

入力できる最大桁数は15桁となっています。いずれの型であっても、このルールが適用されます。[この制約を解除する...]

図5 入力できる最大桁数を超えた場合のエラーメッセージ

入力できる小数部

入力できる小数部は6桁となっています。いずれの型であっても、このルールが適用されます。[この制約を解除する...]

図6 入力できる小数部を超えた場合のエラーメッセージ
このルールは入力画面にのみ適用されます。演算によって求められた値やアップロード更新、REST API利用時は、指定した型の範囲内で保持することができます。
業務上、有効な数値範囲を定め、範囲チェックを指定するとよいでしょう。

動作例

数値を3桁区切りで出力するように設定した例を図7に示します。

図7 価格が3桁区切りで表示されている

このフォーマット指定は入力時にも適用されます。カーソルのフォーカスが移動したタイミングで、フォーマットされます。(入力中ではありません。)

図8 入力が終わったタイミングでフォーマットが適用される

設定方法

モデル項目詳細定義ダイアログの「出力制御>詳細画面>フォーマット」を指定します。
(一覧画面での設定欄はありません。一覧画面には、ここで指定したフォーマットが適用されます。)

図9 出力フォーマットの指定

用意されているフォーマット

次のようなフォーマット表記が選択肢で用意されています。

フォーマット指定 格納された数値 出力された表記
###,###.### 1234.56 1,234.56
000,000.000 1234.56 001,234.560
###.##% 0.5 50%
\###,### (*1) 10000 ¥10,000
#,###;▲#,### 12800 12,800
-12800 ▲12,800

フォーマット未指定時の動作 7.10.2

4バイト浮動小数点/8バイト浮動小数点の項目では、フォーマット未指定時は次のようになります。

R7.10.2 以降 R7.10.1 まで
デフォルトのフォーマット ##0.0#### ###.#####
違い "5" と入力すると "5.0" と表示される。 "5" と入力すると "5" と表示される。

フォーマットを独自に定義する

ユーザが独自に数値フォーマットを用意することもできます。 次のパターン文字を使うことができます。

詳細は Java クラスライブラリが提供する java.text.DecimalFormat クラスのドキュメントを参照してください。

記号 意味
0 数字
# 数字。ゼロだと表示されない。
. 数字の桁区切り(または通過の桁区切り)
- マイナス記号
, グループ区切り
; 正と負のサブパターンを区切る
% 100 倍してパーセントを表す

例:整数部は3桁区切りとし、小数点第五位までの数値を出力する

#,##0.00000

例:整数部はそのままに、小数点第一位までの数値を出力する

値 "1" の場合、表示時は "1.0" になります。

0.0

例:整数値の場合は整数のみ、小数点まで入力されれば小数点まで出力する

###.##

例えば "1500" と(整数のみ)入力すると "1500" と表示されます。"141.14" と(小数点を含んだ値を)入力すると "141.14" と表示されます。

整数部を3桁カンマ区切りとしたい場合は次のようにします。

###,###.##

例えば "1500" と(整数のみ)入力すると "1,500" と表示されます。

例:パーセントの扱い

フォーマットに「%」文字を指定すると、計算結果が自動的に100倍されます。計算式を使わずに(100倍を)実現できます。

###.0%

1を入力すると "100.0%" と表示されます。

0.1を入力すると10%と、0.8を入力すると80%としたい場合、次のようにします。

###.##%

小数点以下の位を2桁以上表示させたい場合は、「0」を増やして指定してください。例えば、小数点第3位まで表示させる場合は次のように指定します。

###.000%

入力された小数点の値だけを表示したい場合は、次のようにします。

###.0##%

上のフォーマットでは、0.152 を入力すると 15.2% と表示されます。

非推奨フォーマット

###% という表記は小数点の利用は非推奨です。この書式は小数点第1位で四捨五入するため、0.8は100%と表示され、0.1は0%と表示されてしまいます。

小数点扱い時の注意

小数の場合、書式指定した桁数よりも実際の値が多い場合は「丸め」処理(「四捨五入」「切り上げ」「切り捨て」)が自動的に行われます。この判定は、端数が出た場合、その上下の近い方の数字に合わせます。

例)指定桁数:小数点2桁の場合
「0.123」は「0.12」となります。
「0.127」は「0.13」となります。
「0.125」は偶数側に丸められ、「0.12」となります。
(「0.125」の「5」は、上下の数字「0.12」「0.13」両方に同じ距離となるので、「偶数」である「0.12」に丸められます。)
「0.135」は偶数側に丸められ、「0.14」となります。

小数の扱いについての仕様は、日本工業規格の「JIS丸め」(JIS Z 8401)に準拠しています。

円マークの扱い

円マークつきのフォーマット (例 \###,###) を指定すると、新規登録画面でも円マークが表示されます。

参照連動項目の場合

参照連動項目型の場合、出力フォーマットは、参照側モデルの設定が反映されます。

トラブルシューティング:出力フォーマットが反映されない

入力項目の種類が「数字」となっているかどうかを確認してください。[詳細...]

「入力制御>日付・数値の初期値は表示しない」をお読み下さい。

「検索制御>範囲検索を行う」をお読み下さい。

数値の場合、入力欄は自動的に次のルールが適用されます。

  • 入力カーソルの位置は右。
  • 入力できる最大桁数は15桁。
  • 入力できる小数部は6桁。

業務用件で、この制約を解除する必要がある場合、次の設定を行います。

対象項目の「入力制御」タブを開きます。数値の場合、「入力項目の種類」「入力項目の種類(スマートフォン)」のいずれも「数字」になっています。

図10 入力項目の種類

この欄を空白にします。入力欄は文字列型として扱われるため、桁数チェック処理が行われなくなります。

図11 入力項目の種類を解除する
15桁以上の大きな数字を扱う場合、型も「8バイト整数」と変更してください。ただし扱える数値は -9,223,372,036,854,775,808 〜 9,223,372,036,854,775,807の範囲となります。同様に6桁を超える小数点を扱う場合、型も「8バイト浮動小数」と変更してください。扱える精度はおおむね小数点以下およそ15桁の精度です。[詳細...]
入力項目の種類を解除すると、「入力ルール」や「出力フォーマット」も動作しなくなります。

データベースに格納される数値型の標準サイズは次のとおりです。

データベース 定義
Oracle 整数 number(10,0)
1バイト整数 number(3,0)
2バイト整数 number(5,0)
4バイト整数 number(10,0)
8バイト整数 number(19,0)
4バイト浮動小数 float
8バイト浮動小数 double precision
SQL Server 整数 int
1バイト整数 tinyint
2バイト整数 smallint
4バイト整数 int
8バイト整数 numeric(19,0)
4バイト浮動小数 float
8バイト浮動小数 double precision
DB 2 整数 integer
1バイト整数 smallint
2バイト整数 smallint
4バイト整数 integer
8バイト整数 bigint
4バイト浮動小数 float
8バイト浮動小数 double
MySQL 整数 integer
1バイト整数 tinyint
2バイト整数 smallint
4バイト整数 integer
8バイト整数 bigint
4バイト浮動小数 float
8バイト浮動小数 double precision
PostgreSQL 整数 int4
1バイト整数 int2
2バイト整数 int2
4バイト整数 int4
8バイト整数 int8
4バイト浮動小数 float4
8バイト浮動小数 float8
HSQLDB (内蔵DB) 整数 int4
1バイト整数 int2
2バイト整数 int2
4バイト整数 int4
8バイト整数 int8
4バイト浮動小数 float4
8バイト浮動小数 float8