获得小数点后的一位数iOS目标C.

时间:2017-05-19 09:05:14

标签: ios xcode nsstring double decimal

我想在小数点后得到一位数并将其存储为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循环。

1 个答案:

答案 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!