2012-11-27 50 views
2

我已將一個值1/129600.0作爲字符串存儲在plist中。 我能找回它作爲一個字符串,但是當我試圖將其轉換爲雙我得到它作爲1.0.I也曾嘗試CFString字符串將字符串更改爲雙返回一個

NSString *value = [[self array]objectAtIndex:m]; 
double a = [value doubleValue]; 
NSLog(@"%@",value); 
NSLog(@"%f",a); 

並在日誌中返回的值是 1/129600.0和1.0

+0

你可以使用UIWebView的stringByEvaluatingJavaScriptFromString來爲JavaScript調用它,它就像「eval(expression)」,value = @「1/1296 ...」; value = [NSStr ing stringWithFormat @「e​​val(%@)」,value];並調用stringByEvaluatingJavaScriptFromString – zt9788

回答

2

此代碼工作正常,我試了一下在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

1/129600.0對於大多數編程語言(包括ObjC)中的數字都不是有效的表示形式。您需要解析字符串並自行解釋。

2

我猜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); 
+0

不兼容的指針警告 – Sekhar

+0

它不起作用 –

+0

對不起,忘記了一行 – Tieme

0

試試這個

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); 
相關問題