FreeBASIC Format
目次→実行時ライブラリー参考→文字列関数→FORMAT←オリジナル・サイト
指定された書式で、数を整形します。
構文:
用法:
パラメタ:
numerical_expression
整形される数
formatting_expression
整形に使う書式
戻り値:
Format は、数の表示形式を、書式で指示したように整形した、文字列を返します。
書式表現は、数値や日付・時間の値を生み出すことができる文字列です。
注意:
Format は、渡された値を常に Double に変換します。
上の「構文」を参照下さい。
このため表示できる結果の精度は、10進数て約15桁までになります。
記述:
意味のある日付・時間の値を取り出すために、数式は適切な関数から得られた日付データでなければなりません。
この関数は FreeBASIC の一部です。ただし、
vbcompat.bi か
string.bi を含めておかないと、コンパイラによって認識されません。
数値の書式:
シンボル | 記述 |
ヌル文字列 | 一般形式(フォーマットしない) |
0
| 数字の代用:
書式表現のゼロの桁数より、数値の桁数が少ない場合は、前か後ろ(小数のどちらかの側)に、ゼロを表示します。
書式のゼロより、数値の小数の右の桁が多いときは、数は丸められます。
書式のゼロが、数値の小数の左(整数部分)の桁がより少なくても、数値の桁は、全て表示されます。
|
#
| 数字の代用:
上の 0 と同じような規則に従います。ただし、前後のゼロを表示しないという点が異なります。 |
.
|
小数点の代用。書式が、「.」の左に「#」だけの場合は、1より小さい数値は、小数点から始まります。 |
%
|
百分率: 数値を100倍した表示になります。そして、% の文字が、後ろに付きます。 |
,
|
3桁区切り符(コンマ)。
カンマを2つ並べた場合、または、小数点位置(小数点が明示されているか否かに関係なく)のすぐ左のカンマは、
「カンマに挟まれた3桁の数値、またはカンマと小数点に挟まれた3桁の数値を省略せよ。また必要に応じ丸めよ。」
ということを意味します。
小数部の指定の有無にかかわらず、小数点のすぐ左に 3 桁ごとの区切り記号がある場合、または文字列の一番右に桁区切り記号がある場合は、"数値を 1,000 で割って、必要に応じて丸める" ことを意味します。
500 以上で 1,000 未満の数値は 1 として表示され、500 未満の数値は 0 として表示されます。
同じ位置で 3 桁ごとの区切り記号が 2 つ連続する場合は、100 万で割って変換します。
このように、桁区切り記号が増えるごとに 1,000 倍の係数で変換されます。
小数点のすぐ左、または文字列の一番右以外の位置に複数の区切り記号がある場合は、通常の 3 桁ごとの区切り記号を指定したものとして単純に処理されます。
ロケールによっては、3 桁ごとの区切り記号としてピリオドが使用されます。
書式指定された出力で、実際に 3 桁ごとの区切り記号として使用される記号は、システムで認識される数値書式によって異なります。
したがって、桁区切り記号としてピリオドを使用するロケールであっても、書式指定の中ではコンマを 3 桁の桁区切り記号として使用する必要があります。
書式指定された文字列は、ロケールに対して適切な書式で表現されます。
例:数値 100000000 (1億)は、
"#,0." とした場合、桁区切り記号を用いて "100,000,000" と、文字列形式で表記されます。
"#0,." とした場合、1000 で割って位取りした数値、つまり、"100000" という文字列になります。
"#,0,." とした場合、1000 で割って位取りした結果が、桁区切り記号を用いて "100,000" という文字列形式で表記されます。
|
E- E+ e- e+ |
指数表記形式:
書式が、「E-」「E+」「e-」「e+」の右に1個の桁代用(0か#)を含んでいるなら、数は指数表記で示されます。
「E」か「e」が、仮数と指数の間に挿入されて表示されます。
「0」または「#」の右には、指数で桁数が表示されます。
マイナス記号を、負の指数の次に置きたいときは、「E-」 または 「e-」を使います。
マイナス記号を負の指数の次に、また、プラス記号も正の指数の次に置きたいときには、「E+」または「e+」を使ってください。
|
: ? + $ () スペース |
その文字を、シンボルとしてではなく、そのままの文字として表示します。
これらの以外のシンボル文字を、文字そのものとして表示したい場合は、バックスラッシュ(\)をシンボル文字の前に付けるか、または二重引用マークでシンボル文字を囲んでください。 |
\
|
書式の記号列で、シンボル文字(書式記号の文字)を、それをシンボルではなく、文字そのままとして表示したいときは「\」を、そのシンボル文字の前に付けます。
「\」は、これに続く文字を、そのままの文字として表示させます。
|
二重引用符の間の文字 |
二重引用符の間に挟んで文字列を表示します。
|
:
|
時間分離符は、時間の値を整形するときに、時間、分、秒を分離するために使われます。 |
/
|
日付の分離符は、日付の値を整形するときに、日、月、年を分離するために、使われます。 |
日付-時間の書式:
シンボル | 記述 |
d, dd
|
日を、1桁または2桁の数字で表示します。
(1-31/01-31) |
ddd
|
曜日を、省略形で表示します。
(日-土)
|
dddd
|
日を、フルネームで表示します。
(日曜日-土曜日) |
ddddd
|
完全な期日として、連続の日付の数を表示します。
(日、月、年を含んでいます) |
m, mm
|
月を、1桁または2桁の数として表示します。
(1-12/01-12)
m が、h か hh に続いている場合は、月ではなく、分を表示します。 |
M, MM
|
M は、h か hh に続く場合でも、1桁または2桁の数として月を表示します。
(1-12/01-12) |
mmm |
省略語で、月を表示します。
(Jan-Dec)←日本語環境では使えない? |
mmmm
|
フルネームで、月を表示します。
(1月-12月) |
y, yy
|
年を、2桁の数として表示します。
(00-99) |
yyyy
|
4桁の数として年を表示します。
(1900-2040) |
h, hh
|
時間を、1桁または2桁の数として表示します。
(0-23/00-23) |
m, mm
|
分を、1桁または2桁の数として表示します。
(0-59/00-59)
m が、h か hh にすぐ続かない場合は、分ではなく、月を表示します。
|
n, nn
|
h か hh に、すぐ続かない場合でも、1桁または2桁の数として分を表示します。
(0-59/00-59)
|
s, ss
|
秒を、1桁または2桁の数として表示します。
(0-59/00-59)
|
ttttt
|
時、分、秒の完全な時間として、時間通し番号を表示します。
|
AM/PM (Default), am/pm
|
12時間表示の時計を使用して、午前(正午まで)は AM かam を表示します。午後(正午と11:59の間)は、PM または pm を表示します。 |
A/P, a/p
/P/p
|
12時間表示の時計を使用して、午前(正午まで)は A または a を表示します。午後(正午から11:59の間)は、P または p を表示します。 |
時間と日付の区切り記号の表現は、地域またはローカライズされた設定がターゲット プラットフォームでサポートされている場合、オペレーティング システムから決定される場合があります。
この決定は実行時に行われるため、出力はプログラムが実行されているシステムにローカライズされます。
例1:
数値書式
#include "string.bi"
#include
"vbcompat.bi"
Dim As Double numberVal
(...
) =
{5, -
5, .5
}
Dim As String formatStr
(...
) =
{"",
"0",
"0.00",
"#,##0",
"#,##0.00",
"0%",
"0.00%",
"0.00E+00",
"0.00E-00"}
?
"Format string",,
Str(numberVal
(0)),
Str(numberVal
(1)),
Str(numberVal
(2))
?
For iFormat
As Integer =
0 To UBound(formatStr
)
? formatStr
(iFormat
),,
For iNumber
As Integer =
0 To UBound(numberVal
)
?
Format(numberVal
(iNumber
), formatStr
(iFormat
)),
Next
?
Next
Sleep
出力:
Format string 5 -5 0.5
' 5 -5 .5
0 5 -5 0
0.00 5.00 -5.00 0.50
#,##0 5 -5 0
#,##0.00 5.00 -5.00 0.50
0% 500% -500% 50%
0.00% 500.00% -500.00% 50.00%
0.00E+00 5.00E+00 -5.00E+00 5.00E-01
0.00E-00 5.00E00 -5.00E00 5.00E-01
例2:
日付と時間の書式
渡辺注:DateValue() は、地域の設定が、QB と同じ短い日付表示形式(mm-dd-yyyy) を指定する場合にだけ、正しく働きます。
日本語環境の場合は、DateSerial を使うと,簡単に設定できます。
DateValue ページ の例2 を参照下さい。
#include
"vbcompat.bi"
Dim As Double dateTimeVal =
DateValue("12/05/1958") +
TimeValue("20:50:35")
Dim As String formatStr
(...
) =
{"yyyy-mm-dd",
"d-mmmm-yy",
"d-mmm",
"dd-mmm",
"ddd-mmm",
"dddd-mmmm",
"ddddd-mmmm",
"mmmm-yyyy",
"h:mm AM/PM",
"h:mm:ss AM/PM",
"h:mm",
"h:mm:ss",
"m/d/yy h:mm"}
?
"Format",,
"Display"
?
For iFormat
As Integer =
0 To UBound(formatStr
)
? formatStr
(iFormat
),,
Format(dateTimeVal, formatStr
(iFormat
))
Next
Sleep
出力:
Format Display
yyyy-mm-dd 1958-12-05 ←「年」と「日」が違って表示される? DateSerial() を使うとよい。
d-mmmm-yy 5-12月-58
d-mmm 5-12
dd-mmm 5-12
ddd-mmm 土-12
dddd-mmmm 土曜日-12月
ddddd-mmmm 1899/12/30-12月
mmmm-yyyy 12月-1958
h:mm AM/PM 8:50 PM
h:mm:ss AM/PM 8:50:35 PM
h:mm 20:50
h:mm:ss 20:50:35
m/d/yy h:mm 12/5/58 20:50
追加例1:
出力:
追加例2:
追加例3:
方言差:
なし
QBからの違い:
-
QB 4.5では、存在していません。
この関数が最初に現れたのは、PDS 7.1 です。
参照:
ページ歴史:2022-12-31 14:06:23
日本語翻訳:WATANABE Makoto、原文著作者:AntoniGual