19

この質問に続いて、プロトコル バッファで System.Decimal オブジェクトを表す最良の方法は何でしょうか?

4

5 に答える 5

5

マークと私は、「共通のPBメッセージ」ライブラリを考え出すという非常に漠然とした計画を立てています。これにより、.NETとJavaで変換を利用できる、かなり一般的なタイプ(日付/時刻と小数がすぐに頭に浮かぶ)を共通の方法で表すことができます。 (そして他の誰かが貢献したいものは何でも)。

.NETに固執することに満足していて、コンパクトさを探しているなら、私はおそらく次のようなものを使うでしょう:

message Decimal {

    // 96-bit mantissa broken into two chunks
    optional uint64 mantissa_msb = 1;
    optional uint32 mantissa_lsb = 2;

    required sint32 exponent_and_sign = 3;
}

符号は、指数が絶対値であるexponent_and_signの符号で表すことができます。

仮数の両方の部分をオプションにするということは、0が非常にコンパクトに表されることを意味します(ただし、0mと0.0000mなどを区別します)。本当に必要な場合は、exponent_and_signもオプションにすることができます。

Marcのプロジェクトについてはわかりませんが、私のポートでは部分クラスを生成しているので、System.DecimalとProtobuf.Common.Decimal(またはその他)の間の変換を部分クラスに入れることができます。

于 2008-12-16T15:47:15.283 に答える