1

私のアプリでは、一連のスライダーから値を取得し、それらを AppDelegate で NSMutableString に変換しています。ただし、後でこれらの値を思い出す必要があるので、これらの値を使用して計算を行うことができますが、これらの値を浮動小数点数に再変換することはできません。毎回 0 を取得するだけです。NSMutableString を float 値に変換するにはどうすればよいですか?

これは、デリゲートから NSMutable 文字列を取得して変換し、計算を実行しようとするビュー コントローラーのコードです。

-(IBAction)sliderValue:(id)sender {

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];



float x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16,x17,x18,x19,x20,compat;



x1 = [appDelegate.x1 floatValue];
x2 = [appDelegate.x2 floatValue];
x3 = [appDelegate.x3 floatValue];
x4 = [appDelegate.x4 floatValue];
x5 = [appDelegate.x5 floatValue];
x6 = [appDelegate.x6 floatValue];
x7 = [appDelegate.x7 floatValue];
x8 = [appDelegate.x8 floatValue];
x9 = [appDelegate.x9 floatValue];
x10 = [appDelegate.x10 floatValue];
x11 = [appDelegate.x11 floatValue];
x12 = [appDelegate.x12 floatValue];
x13 = [appDelegate.x13 floatValue];
x14 = [appDelegate.x14 floatValue];
x15 = [appDelegate.x15 floatValue];
x16 = [appDelegate.x16 floatValue];
x17 = [appDelegate.x17 floatValue];
x18 = [appDelegate.x18 floatValue];
x19 = [appDelegate.x19 floatValue];
x20 = [appDelegate.x20 floatValue];

compat = (40-(fabsf(x1-x11)+fabsf(x3-x13)+fabsf(x6-x16)+fabsf(x8-x18))+(x2+x5+x7+x10+x12+x15+x17+x20)*(1-fabsf(x10-x20)/10)/2+(2-fabsf(x4-x14)/5)*(x5+x15)/2);


NSMutableString *strAnswer = [[NSMutableString alloc] initWithString:@"Your Compatibility is "];
NSString *score = [[NSString alloc] initWithFormat:@"%.2f",x2];


[strAnswer appendString:score];
[strAnswer appendString:@" % "];
result.text = appDelegate.x2;

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"The Results Are IN!!" message:strAnswer delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];

[alert show];

}

ここにある NSScanner メソッドをどのように正確に実装しますか?

4

2 に答える 2

2

より強力で柔軟なfloatValue NSString メソッドまたはNSScannerを使用します。受信者が浮動小数点数の有効なテキスト表現で始まっていない場合、floatValue は 0.0 を返すため、個人的には後者を好みます。@"0.0"したがって、とを区別することはできません@"completegarbage"

于 2011-11-22T15:38:51.193 に答える
1

このようなもの

NSMutableString *str = [[NSMutableString alloc] init];
[str setString:@"123.4"];

float f = [str floatValue];
于 2011-11-22T15:22:16.610 に答える