[FIG(short list)[ [3] [[数の表現]]
- [[数字]]
- [[[VAR[n]]進数]]
- [[位取り記数法]]
- [[指数表記]]
- [[新港語数値表現]]
- [[数 (文字列)]]
- [[数 (SGML)]]

]FIG]


* 数値の国際化

[1]
In Japanese typography, numbers are written in Arabic digit
(i.e. [CODE(charname)@en[[[DIGIT ZERO]]]]〜[CODE(charname)@en[[[DIGIT NINE]]]])
for horizontal text ([CODE(CSS)@en[[[writing-mode]]: [[lr-tb]]]])
or in Han (CJK ideographic) digit (such as
[CODE(charname)@en[[[CJK UNIFIED IDEOGRAPH-4E00]]]])
for vertical text ([CODE(CSS)@en[[[writing-mode]]: [[tb-rl]]]]).
Styling language that support both horizontal and
vertical layout should provide a way to display
representation of number in some other format
than in source document tree (as in
[CODE(CSS)@en[[[list-style-type]]]] for list bullets).

In addition, to support this styling (and, e.g. 
scripting) in semantic and standadized way,
an element type whose instance contains a textual
representation of a number should be introduced.

[PRE(example code)[
<p>そこには<number>100</number>個の林檎があります。</p>
<!-- There were 100 apples. -->
]PRE]

This example markup should be rendered as...
[PRE(example)[
そこには 100 個の林檎があります。
]PRE]

... or ...
[PRE(example)[
そ
こ
に
は
百
個
の
林
檎
が
あ
り
ま
す
 ゜
]PRE]

[2] 英語圏の[[Webアプリケーション]]などではしばしば「52.4K」 (= 5万2400) 
のような表現が用いられますが、日本語圏では一般的な表現ではありません
(分野によっては用いられることもあります)。

* HTML における数値のマーク付け問題

[12] 
現在の [[HTML]] では、[[数値]]を[[マーク付け]]する必要がある場合、
[CODE[data]]
[[要素]]を使うことができます。
[CODE[data]]
は[[数値]]に限らず「データ」を表すために使えます。

[13] 
データの種類が「数値」であることを明示する方法は [[HTML]] レベルでは用意されていません。
[CODE[class]] [[属性]]を使って記述することになります。

[14] 
「数値」データはどのような種類でも、どのような形式でも構いません。
[[整数]]でも[[小数点数]]でもいいですし、[[位取り記数法]]でも[[指数表記]]でも、
[[ローマ数字]]でも[[漢数字]]でも「データ」として意味があるものなら使えます。

[15] 
誤解してはいけないのは、

- ○ [[HTML]] で「数値」であることを明示したいなら [CODE[data]] を使うことが'''できる'''

のであって、

- '''×''' [[HTML]] で[[数値]]を記述するなら [CODE[data]] を使わなければならない

ということでは'''ありません'''。

[16] 
[[HTML文書]]の[[著者]]は、 [[CSS]]、 [[JavaScript]] での利用、
[[サーバー]]側の処理での利用、特定の[[クライアント]]からの利用、その他何らかの意義がある、
あるいは意義が予想されると信じるとき、 
[CODE[data]]
を使うことができます。そうでないときに使う義務はありません。

** 歴史

[20] [[HTML]] において[[数値]]を [CODE(HTMLe)@en[[[number]]]] [[要素]]などとして[[マーク付け]]することは古くから提案されてきました。
[[数値]]の[[マーク付け]]には単に[[数値]]が[[数値]]たることを明記するべきという[[意味マーク付け]]的に過激な主張にとどまらず、
[[コンマ]]等[[桁区切り]]記号挿入等 [[CSS]] による[[スタイル付け]]の実現や[[桁区切り記号]]・[[小数点]]の[[局所化]]のような実益もあります。
>>1 に示されるような[[縦書き]]時の[[漢数字]]化も同様です。

[21] とはいえ、実際に [[Web]] で >>20 に示したような[[スタイル付け]]の実現が強く望まれているかには疑問が呈されています。
[[HTML5]] の策定に当たっても[[数値]]の[[マーク付け]]のための[[要素]]の追加の要望がありましたが、
まずは [[CSS]] での[[スタイル付け]]の検討を待つべきだとして却下されています (>>18、>>19)。

-*-*-

[10] [[XHTML2]] は[[数値]]を表す[[要素]]の追加を一時検討していました。

- [23] [CITE@en[- XHTML Text Module]] ([TIME[2003-02-01 00:24:54 +09:00]] 版) <http://www.w3.org/TR/2003/WD-xhtml2-20030131/mod-text.html#s_textmodule_issue_2>

[8] >>23
[[XHTML2]] 第4次案では検討課題として [CODE(HTMLe)@en[[[nr]]]] [[要素]]の提案があると触れられていました。

- [29] [CITE@en[XHTML 2.0]], [TIME[2003-05-07T16:23:41.000Z]], [TIME[2024-09-11T09:35:45.972Z]] <https://www.w3.org/TR/2003/WD-xhtml2-20030506/xhtml2.html#s_inline-textmodule_issue_1>

[30] >>29 第5次案にもありました。

[9] 
>>23 の次の現存最古である[TIME[2003-06-08]]内部案 ([SEE[ [[XHTML2]] ]]) 
ではその箇所が削除されていました。
その課題を解決する何らかの追加・変更があったわけでもなく、
どのような意思決定があったのかは不明です。


[FIG(data)[ [31] [[HTML要素概説]]

:[F[要素名]]:[CODE[nr]]
:日付:[TIME[2003-01-31]]
:説明:
[TIME[2003-01-31]]、
[CITE[XHTML 2.0]]
は検討課題として
[CODE[nr]]
を示した。
[[数値]]を表す。
[SRC[>>23]]
当時は [[XHTML 2.0名前空間]]だった。
しかし正式に追加されることなく削除された。
現在の
[CODE[data]]
に当たる。
:出典:
[REFS[

- [23] 
[DFN[XHTML2-20030131:text]]:
[CITE@en[- XHTML Text Module]],
[DATA(.author)[[[W3C]]]],
[TIME(.published)[2003-01-31]],
[TIME[2003-02-01 00:24:54 +09:00]] 
<http://www.w3.org/TR/2003/WD-xhtml2-20030131/mod-text.html>

]REFS]
:参照:[CODE[number]]

]FIG]


[FIG(data)[ [32] [[HTML要素概説]]

:[F[要素名]]:[CODE[number]]
:参照:[CODE[data]]

]FIG]

-*-*-

[11] 
[[HTML5]] の開発でも[[数値]]の[[マーク付け]]はたびたび話題になっていました。

[18]
[CITE[Re: simple numbers]] ([[Ian Hickson]] 著, [TIME[2007-12-11 05:20:54 +09:00]] 版) <http://permalink.gmane.org/gmane.org.w3c.whatwg.discuss/12448>

[19]
[CITE[Re: simple numbers]] ([[Ian Hickson]] 著, [TIME[2008-05-07 01:12:53 +09:00]] 版) <http://permalink.gmane.org/gmane.org.w3c.whatwg.discuss/14012>

[3] その後 [CODE(HTMLe)@en[[[data]]]] [[要素]]が追加され、[[数値]]も必要があればこの[[要素]]で[[マーク付け]]できるようになりました。

** 関連

[22] [[フォームコントロール]]としては[[数値]]のための [CODE(HTML)@en[[[<input type=number>]]]] が [[Web Forms 2.0]]
で追加されています。

[17] 
何らかの計算結果等を記述したいときは [CODE[output]] [[要素]]を使うこともできます。
[CODE[data]] と [CODE[output]] とどちらがいい、わるいということは一概にはいえず、
その場その場で使いやすい方を使えばいいと考えられます。
場合によっては両方を使うこともありでしょうが (その場合は [CODE[output]]
の中に [CODE[data]] を使う方が意味的に妥当でしょうか)、
敢えてそうしなければならないこともありません。

[27] 
記述したい数値によっては、 [CODE[meter]] や [CODE[progress]] を使ったほうが視覚的にわかりやすく表示されて便利かもしれません
(が、数値が表示されずかえって使いにくい場面もあるかもしれず、
その場合は並べて併用するのがいいでしょう)。


[28] 
[[数式]]的性質を持つ[[数値]]であれば [[MathML]] を使って表すこともできます。
[[HTML]] のコードとしては冗長になってしまうので手書きするには不便になりますが、
[[簡易マーク付け言語]]等から機械的に出力する場合で簡単な[[数値]]と複雑な[[数式]]を統一的に扱いたい場合など、
[[MathML]] の活用がより好ましい場面も考えられます。

* 数の書式付け

[7] 
[CITE[DSSSL]], [TIME[2001-08-19T05:29:10.000Z]], [TIME[2023-11-23T08:31:23.068Z]] <http://www.y-adagio.com/public/standards/jis_dsssl/cls8.txt#:~:text=数値から文字列への変換>


* メモ

[1] [CITE@ja[記数法 - Wikipedia]]
([TIME[2022-05-23T05:39:39.000Z]], [TIME[2022-05-28T03:47:42.510Z]])
<https://ja.wikipedia.org/wiki/%E8%A8%98%E6%95%B0%E6%B3%95>

[2] [CITE@ja[命数法 - Wikipedia]]
([TIME[2022-05-26T13:24:20.000Z]], [TIME[2022-05-28T03:48:39.199Z]])
<https://ja.wikipedia.org/wiki/%E5%91%BD%E6%95%B0%E6%B3%95>

[4] [CITE@ja[広義の記数法 - Wikipedia]]
([TIME[2022-05-14T03:47:36.000Z]], [TIME[2022-05-28T04:05:59.562Z]])
<https://ja.wikipedia.org/wiki/%E5%BA%83%E7%BE%A9%E3%81%AE%E8%A8%98%E6%95%B0%E6%B3%95>


[24] [CITE[Basic Data Types and Interfaces – SVG 1.1 (Second Edition)]]
( ([TIME[2011-08-10 12:35:27 +09:00]] 版))
<http://www.w3.org/TR/2011/REC-SVG11-20110816/types.html#DataTypeNumber>

[25] [CITE[Basic Data Types and Interfaces – SVG 1.1 (Second Edition)]]
( ([TIME[2011-08-10 12:35:27 +09:00]] 版))
<http://www.w3.org/TR/2011/REC-SVG11-20110816/types.html#Precision>

[26] [CITE@en-US[csswg: changeset 8602:26edc24f2215]]
( ([TIME[2013-07-27 10:19:43 +09:00]] 版))
<https://dvcs.w3.org/hg/csswg/rev/26edc24f2215>

[5] [CITE[車の希望ナンバー制がピンチ 英字も導入し対応へ | NHKニュース]]
( ([[日本放送協会]]著, [TIME[2016-07-13 17:26:50 +09:00]]))
<http://www3.nhk.or.jp/news/html/20160713/k10010594091000.html?utm_int=all_side_ranking-access_004>

[6] [CITE@ja[カンマとピリオド | 貿易よもやま話]], [TIME[2023-08-14T06:23:30.000Z]] <https://www.globalbizgate.com/boekitips/2015/11/30/%e3%82%ab%e3%83%b3%e3%83%9e%e3%81%a8%e3%83%94%e3%83%aa%e3%82%aa%e3%83%89/>

>なので、金額のように小数点も桁区切りも大事な数字を使い場合には、英語フルスペルで書く(いわゆる英文複記をする)のが安心なのです。
>契約書や為替手形における英文複記の目的については、多くのテキストで「アラビア数字だけだと、改ざんすることが可能だから」とされていますが、実は桁区切り、小数点の表記方法は国によって違うからという理由もあるのです。

[33] 
[CITE@ja[位取り記数法は「一番合理的な記数法」ではない。 - Migdal]], [TIME[2026-01-02T02:56:06.000Z]] <https://migdal.jp/casolot/%E4%BD%8D%E5%8F%96%E3%82%8A%E8%A8%98%E6%95%B0%E6%B3%95%E3%81%AF%E4%B8%80%E7%95%AA%E5%90%88%E7%90%86%E7%9A%84%E3%81%AA%E8%A8%98%E6%95%B0%E6%B3%95%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%84-30ao>
