10

センサーの読み取り値を取得して、パーセンテージで表示しようとしています。[いくつかの値]は常に0から1の間になります。

これが私のコードです:

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

ただし、「互換性のないタイプのフロートからNSNumber*_strongに割り当てる」というメッセージが表示されます。

NSNumberオブジェクトを操作するのは初めてで、センサーの読み取り値をユーザーのパーセンテージとして表示する方法を理解するのに苦労しています。例:75%

助けてくれてありがとう

4

3 に答える 3

37

NSNumberに格納するには、整数または浮動小数点値をボックス化する必要があります。

なので:

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

この後、次のように印刷/文字列に変換できます。

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

注%%二重パーセント記号

于 2013-03-15T16:51:23.703 に答える
7

最初に値をfloatに保持し、そこからNSNumberを作成する必要があります。

NSNumber *reading = [NSNumber numberWithFloat:someValue];
float newNum = [reading floatValue] * 100;
reading = [NSNumber numberWithFloat:newNum];
于 2013-03-15T16:52:22.443 に答える
0

私は複数行のコードを書くのが少し面倒なので、複数行のコードを書くのは好きではありません。私は常に圧縮されたソリューションを探しています。以下の解決策を見つけてください。

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

上記の解決策はfloat値用です。整数値で入力したい場合は、「numberWithFloat」を「numberWithInt」に置き換えてください。

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

于 2013-03-18T07:51:44.303 に答える