2013-03-15 127 views
8

私はセンサーから読みとって、パーセンテージで表示しようとしています。しかしNSNumberの計算方法

NSNumber *reading = [some value]; 
reading = [reading floatValue] * 100; 

、私は

新品です "*互換性のないfloat型から_strongのNSNumberに割り当てる" を取得:私のコードです。ここ

0と1の間[いくつかの値]は常になりますNSNumberオブジェクトを動作させることになり、センサ読取り値をユーザに表示する方法を理解するのに苦労します。例:あなたが通りのNSNumber、

に保存する整数または浮動小数点値ボックスに必要な任意の助け

+2

NSNumberオブジェクトを使用している特別な理由はありますか? plistsやJSONなどを書いたり読んだりするときや、Core DataやCore Imageを扱うとき以外は、通常は必要ありません。私は浮動小数点型や二重型を保持し、ボックス化が必要な時点でそれらをボックス化する傾向があります。 –

答えて

34

のための75%

ありがとう:この後

NSNumber *reading = @(10.123); 
reading = @([reading floatValue] * 100); 

、あなたは印刷することができます/文字列に変換して:

NSString *display=[NSString stringWithFormat:@"%@%%",reading]; 

NOTE %% doubl eパーセンテージ記号

+0

ありがとうございます。これは素晴らしい作品です! – sdknewbie

+0

@sdknewbiewしかし、私はそれがより重要だと思います。「あなたはAnoopVaidyaコードがあなたが望むことを理解していますか? – John

+0

@ジョン:いい質問です。私は彼が私のとapurvのコードを分析したと思います。新しいスタイルと古いスタイルのobj-cで同様のコード。それほど大きな違いはありません。あなたが言うこと? –

7

浮動小数点型の値を最初に保持し、そこからNSNumberを作成する必要があります。

+0

なぜ次の行の値をもう一度unboxするには 'someValue'を入れますか?乗法式で 'someValue'を使うだけです。 –

0

マルチラインコードを書くのは少し怠惰なので、私はマルチラインコードを書いていません。私は常に圧縮されたソリューションを探しています。以下の解決策を見つけてください。

float testValue=5.00032; 
    NSString *resultValue=[NSString stringWithFormat:@"%@%%",[NSNumber numberWithFloat:(testValue*100)]]; 

上記の解は浮動小数点値です。入力を整数値として入力したい場合は、 "numberWithFloat"を "numberWithInt"に置き換えてください。

このソリューションがお役に立てれば幸いです。ありがとう。