我已將一個值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
我已將一個值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
此代碼工作正常,我試了一下在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)中的數字都不是有效的表示形式。您需要解析字符串並自行解釋。
我猜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);
試試這個
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);
你可以使用UIWebView的stringByEvaluatingJavaScriptFromString來爲JavaScript調用它,它就像「eval(expression)」,value = @「1/1296 ...」; value = [NSStr ing stringWithFormat @「eval(%@)」,value];並調用stringByEvaluatingJavaScriptFromString – zt9788