3

NSDecimalNumberStoreKit のクラスからを取得しました。これを C# の型に変換して、精度の低下を最小限に抑えSKProductたいと考えています。decimalそのようなことを行う簡単な方法はありますか?

私の2つの選択肢は次のとおりです。

  1. それぞれのバイナリ実装を理解し、独自のビット単位の変換を行うと仮定します。または
  2. NSDecimalNumberに文字列を渡して、それをdecimal解析してもらいました。

オプション 1 は手間がかかりすぎて、もろくなる可能性があるので、オプション 2 を使用する傾向があります。(非常にまれにしか発生しないため、どれだけ遅くても我慢できます。

4

3 に答える 3

5

NSDecimalおよびNSDecimalNumber構造体の表現は.NETと同じではありませんSystem.Decimal

変換は常に可能ですが、簡単ではありません。パフォーマンスが大きな問題ではない場合は、string表現を使用してそれらの間で変換することをお勧めします。

于 2012-11-05T21:40:12.453 に答える
3

これが私をつまずかせ、かなりの時間を費やしたという理由だけで、NSDecimalとの間の変換に現在使用しているいくつかの拡張メソッドを次に示しますdecimal。これは非常に苛立たしいことであり、これ以上優れた方法が組み込まれていないことに驚いています。

public static class NumberHelper
{
    public static decimal ToDecimal(this NSDecimal number)
    {
        var stringRepresentation = new NSDecimalNumber (number).ToString ();
        return decimal.Parse(stringRepresentation, CultureInfo.InvariantCulture);
    }

    public static NSDecimal ToNSDecimal(this decimal number)
    {
        return new NSDecimalNumber(number.ToString(CultureInfo.InvariantCulture)).NSDecimalValue;
    }
}
于 2014-07-24T02:46:53.497 に答える