XELF.Designer / Hexadecimal Floating Point

 XMDの基礎となる形式をXONと呼ぶことにしています。テキスト形式におけるXONの数値表現に「16進浮動小数点数リテラル」を追加してみました。この「16進浮動小数点数リテラル」の本来のメリットは、以下の変換における丸め誤差の回避にあります。ただし現状は.NETマネージドコードのみによる単純な実装のため、パフォーマンスや誤差は評価できていません。

基数変換の丸め誤差

 浮動小数点形式として通常使われるIEEE754が2進数に基づいているのに対して、浮動小数点の文字列表現には10進数がよく持ちられています。この相互変換には丸め誤差を含むことがあります。

16進浮動小数点数リテラル

Numeric := HexadecimalFP | HexadecimalFPAllowance | DecimalFP
HexadecimalFP := Sign+"1."+Hex+"x"+Hex
HexadecimalFPAllowance := Sign+"0" | Sign+"1" | Sign+"∞" | "NaN"
Sign := "" | "+" | "-"

 数値リテラルに16進浮動小数点数表現を使えるようにしました。特別な書式かつ制限があります。以下の例の1行目のように表します。2行目はD言語などでの表現です。

1.F4x9
= 0x1.F4p9
= 0b1.111101 × 20b1001
= (20 + 2-1 + 2-2 + 2-3 + 2-4 + 2-6) × 29
= 1.953125 × 512
= 1000

アセットの形式

 デザインタイムでは柔軟なテキスト形式、ランタイムではスマートなバイナリ形式(たとえばXNAではContentPipeline)と考えています。