我正在尝试使小数点后一位数字并将其存储为双精度。
例如:-
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
!因此,您应该比较字符串值而不是双精度值!