我想在小数点后得到一位数并将其存储为double。 例如: -
float A = 146.908295;
NSString * string = [NSString stringWithFormat:@"%0.01f",A]; // op 146.9
double B = [string doubleValue]; // op 146.900000
我想要以double或float形式输出146.9 ..,在复制或downvoting之前确保给出了此输出的答案.. 感谢
编辑: -
NSString * str = [NSString stringWithFormat:@"%0.01f",currentAngle];
tempCurrentAngle = [str doubleValue];;
tempCurrentAngle = tempCurrentAngle - 135.0;
if (tempCurrentAngle == 8.7) {
NSLog(@"DONE ");
}
这里currentAngle来自continueTrackingWithTouch方法,它将处于float ..即使tempCurrentAngle值变为8.700000,它也不会进入if循环。
答案 0 :(得分:1)
您可以比较字符串值而不是像
这样的双精度值 double currentAngle = 143.7; // I have taken static values for demo.
double tempCurrentAngle = 0.0;
NSString * str = [NSString stringWithFormat:@"%0.01f",currentAngle];
tempCurrentAngle = [str doubleValue];;
tempCurrentAngle = tempCurrentAngle - 135.0;
NSString *strToCompare = [NSString stringWithFormat:@"%0.01f",tempCurrentAngle];
if ([strToCompare isEqualToString:@"8.7"] ) {
NSLog(@"DONE ");
}
如果您逐行调试一次,那么您就会明白为什么它没有进入if caluse
。
tempCurrentAngle
转换为143.69999999999999
后, str
获取double
,然后从中减少135.0
,使其价值为8.6999999999999886
,然后你将它与8.7
进行比较,那肯定不会是平等的!但如果你用一个小数点转换tempCurrentAngle
字符串,那么它将是8.7
!所以你应该比较字符串值而不是double!