値1/129600.0を文字列としてplistに保存しました。文字列として取得することはできますが、doubleとして変換しようとすると、1.0として取得されます。CFStringも試しました。
NSString *value = [[self array]objectAtIndex:m];
double a = [value doubleValue];
NSLog(@"%@",value);
NSLog(@"%f",a);
ログでは、戻り値は1/129600.0と1.0です。
値1/129600.0を文字列としてplistに保存しました。文字列として取得することはできますが、doubleとして変換しようとすると、1.0として取得されます。CFStringも試しました。
NSString *value = [[self array]objectAtIndex:m];
double a = [value doubleValue];
NSLog(@"%@",value);
NSLog(@"%f",a);
ログでは、戻り値は1/129600.0と1.0です。
1/129600.0 は有効な数値ではないと思います。
式を作成し、そこから NSNumber を作成してみてください:
NSString *equation = [[self array]objectAtIndex:m];
NSNumber *a = [[NSExpression expressionWithFormat:equation] expressionValueWithObject:nil context:nil];
double a = [result doubleValue];
NSLog(@"%f", a);
このコードは正常に動作します。xCode で試してみました。
NSString *equation = [[self array]objectAtIndex:m];
NSExpression *result = [NSExpression expressionWithFormat:equation];
NSNumber *a = [result expressionValueWithObject:nil context: nil];
NSLog(@"%@",result);
NSLog(@"%.10f",[a doubleValue]);
1/129600.0
ObjC を含むほとんどのプログラミング言語では、数値の有効な表現ではありません。文字列を解析して自分で解釈する必要があります。
これを試して
NSString *value = [[self array]objectAtIndex:m];
NSArray *arr = [value componentsSeparatedByString:@"/"];
double a;
if ([arr count] == 2)
{
a = [arr objectAtIndex:0]/[arr objectAtIndex:1];
}
NSLog(@"%@",value);
NSLog(@"%f",a);