我正在尝试使小数点后一位数字并将其存储为双精度。
例如:-

float A = 146.908295;
 NSString * string = [NSString stringWithFormat:@"%0.01f",A]; // op 146.9
  double B = [string doubleValue]; // op 146.900000


我想以双精度或浮点格式输出为146.9。.在复制或减票之前,请确保已给出此输出的答案。
谢谢

编辑:-

  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也不进入循环。

最佳答案

您可以比较字符串值,而不是像double这样的字符串,

 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!因此,您应该比较字符串值而不是双精度值!

07-24 09:25