2

業界標準に準拠する XML ファイルを使用しています。スキーマの標準ドキュメントでは、フィールドの 1 つを有理数として定義し、そのデータは 2 つの整数として表されます。通常、2 番目の値は 1 です (例: <foo>20 1</foo>)。XML で定義された有理数の標準が存在するかどうかを確認するために、あまり成功することなく探し回っています。XML-SCHEMA のメーリング リストで、この (8 年前の) やり取りを見つけました。

http://markmail.org/message/znvfw2r3a2pfeykl

有理数を表すための標準的な「XML の方法」があるかどうか、また、このドキュメントに適用される標準がそれを購読しているのか、それとも彼らがドキュメントのためにそれを行う独自の方法を作成し、依存しているのかは明らかではありません。標準を読む人々に。ドキュメントは、フィールドが有理数であると言う以上に具体的ではありません。

有理数を表す標準的な方法があり、このドキュメントがそれを正しく実装していると仮定すると、System.Xml の機能はそれを認識しますか? 繰り返しますが、私の検索は特に実り多いものではありませんでした。

フィードバックをお寄せいただきありがとうございます。

4

3 に答える 3

3

これは正確には XML 側の答えではありませんが、有理数を表すための C# クラスが必要な場合は、ExifUtils ライブラリの一部として非常に柔軟なクラスを以前書きました(ほとんどの EXIF 値が表されているため) 。有理数として)。

クラス自体は、実装する任意の型 (すべての BCL 数値型を含む) の分子/分母を受け入れるジェネリックでIConvertableあり、シリアル化 (ToString) および逆シリアル化 (Parse/TryParse) を行い、XML 表現に必要なものを正確に提供します。

スペースを使用して有理数を絶対に表現する必要がある場合' 'は、ソース内の文字通り 1 文字の変更でスペースを区切り文字として使用するように適応させることができます。


スティーブン・ロウのコメントへの応答として、少し話題から外れているように見えますが、有理数を使用することにはいくつかの利点があります。PI などの数値も、10 進数/浮動小数点数として表すことはできません。PIの近似(Math.PI の値など) は、有理数と同じくらい正確に表すことができます。

314159265358979323846 / 100000000000000000000

非常に単純な有理数2/3は、あらゆる種類の浮動小数点/固定精度の 10 進数と同じ精度で表現することは不可能ですが、次のようになります。

0.66666666666666666667
于 2009-12-19T18:01:32.503 に答える
1

MathMLでは分数を表現できます。それが業界標準のAFAIKです。

于 2008-11-14T21:35:07.777 に答える
1

彼らがこの提案を標準として受け入れなかったことを嬉しく思います! 「有理数」プリミティブに基づいて他のすべての数を提案する人は、この方法で表現できない超越数 (たとえば Pi など) について聞いたことがありません。

しかし、あなたの質問に戻ります。私は、電力業界に関連する特定のエンジニアリング値の RDF 仕様の一部として、xml で有理数に出くわしただけです。コンマで区切られた数字のペアだったと思います

このドキュメントではフォーマットを N/M と定義していますが、別のリファレンスでは N,M と定義しています。

于 2008-11-14T21:08:37.640 に答える