これは簡単なはずですが、どうすれば2つを合計できNSNumber
ますか?のようなものです:
[one floatValue] + [two floatValue]
またはより良い方法が存在しますか?
これは簡単なはずですが、どうすれば2つを合計できNSNumber
ますか?のようなものです:
[one floatValue] + [two floatValue]
またはより良い方法が存在しますか?
本当に良い方法はありませんが、回避できるのであれば、これを行うべきではありません。NSNumber
スカラー数のラッパーとして存在するため、コレクションに格納して、他の。と多形的に渡すことができますNSObjects
。実際の数学で数値を格納するために実際に使用されることはありません。それらに対して計算を行う場合、スカラーのみに対して操作を実行するよりもはるかに低速です。これが、便利なメソッドがない理由である可能性があります。
例えば:
NSNumber *sum = [NSNumber numberWithFloat:([one floatValue] + [two floatValue])];
メッセージディスパッチで少なくとも21の命令を吹き飛ばしていますが、1命令に相当する計算を行うために、メソッドが値(おそらく数百)を箱から出し、箱に戻すために必要なコードはたくさんあります。
したがって、dictに数値を格納する必要があるNSNumber
場合は、を使用します。数値または文字列である可能性のあるものを関数に渡す必要がある場合は、を使用しますNSNumber
が、スカラーC型で数学スティックを実行するだけの場合は。
NSDecimalNumber(NSNumberのサブクラス)には、探しているすべての機能があります。
– decimalNumberByAdding:
– decimalNumberBySubtracting:
– decimalNumberByMultiplyingBy:
– decimalNumberByDividingBy:
– decimalNumberByRaisingToPower:
..。
計算パフォーマンスに関心がある場合は、C++配列std::vectorなどに変換します。
今ではC-Arrayを使用しなくなりました。間違ったインデックスまたはポインタを使用してクラッシュするのは簡単すぎます。そして、すべての新しい[]をdelete[]とペアリングするのは非常に面倒です。
使用できます
NSNumber *sum = @([first integerValue] + [second integerValue]);
編集: ohhoで観察されたように、この例はNSNumber
整数値を保持する 2 つのインスタンスを合計するためのものです。NSNumber
浮動小数点値を保持する2 つの を加算する場合は、次の手順を実行する必要があります。
NSNumber *sum = @([first floatValue] + [second floatValue]);
Swift では、Bolt_Swift ライブラリhttps://github.com/williamFalcon/Bolt_Swiftを使用してこの機能を取得できます。
例:
var num1 = NSNumber(integer: 20)
var num2 = NSNumber(integer: 25)
print(num1+num2) //prints 45