2011-10-25 15 views
2

小数点をNSNumberからintに変換したい、または私が数式で行うことができる他の形式に変換します。私のプロジェクトの注釈付きコードは次のとおりです。NSNumber 10進数からCプリミティブ値?

NSNumber *Left = [left valueForOutputKey:@"Y"]; 

この行は、通常、値が約0.512のQuartz Composer Outletを取得します。

は基本的に、私は10で、これを乗算し、それがである範囲かを確認するよりもより大きく、以下のようないくつかの操作をしたいNSNumberの方法の

+1

'[左intValue]'([参照](http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSNumber_Class/Reference/Reference.html)を参照してください) –

+4

値が0.512の場合は、intではなくfloatまたはdoubleを使用します。 – progrmr

答えて

3

分数コンポーネントを扱っているように見えるので、その値がどれくらいの大きさになるかによって、操作を実行するにはfloatまたはdoubleに変換する必要があります。あなたが大まかに正確な数字を扱っていない限り、浮動小数点演算は問題ありません。ここでは、例えば、どのように見えるかです:

float lValue = [[left valueForOutputKey:@"Y"] floatValue]; 

lValue *= 10; 

if (lValue < 10) { 
    // do whatever 
} 
else if (lValue > 50) { 
    // do whatever 
} 

は、その後、あなたの口に戻って値を格納するか、何を、あなたがするNSNumberに戻ってそれをパック:

NSNumber *newValue = [NSNumber numberWithFloat:lValue]; 

[left setValue:newValue forKey:@"Y"]; 

あなたがにnewValueに変換する必要がありますコントロールに表示する文字列、[newValue stringValue]を使ってください。

+0

それを元に戻す前に10で除算することを忘れないでください。そうしないと、指数関数的に大きな数値が得られます。 –

+0

右 - それは彼が求めていたものに基づくフィラーコードです。 –

+0

ありがとう - これは大きな助けになっています:) – Josh

1

いずれかを使用:。

int leftInt = [Left intValue]; 
float leftFloat = [Left floatValue]; 
double leftDouble = [Left doubleValue]; 
+0

これは "0.512周りの値"でうまく動作しません。 –

+0

フェアポイント、申し訳ありません。とにかく、十分なNSNumberをintに変換する方法としては問題ありません。 – ayoy

+0

ありがとうございます - 私はこれを私のシステムに統合しました:) – Josh