ios - 获取小数点后一位 iOS Objective C

标签 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 或浮点形式的输出为 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,它也不会进入 if 循环。

最佳答案

您可以比较字符串值而不是 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!所以你应该比较字符串值而不是 double 值!

关于ios - 获取小数点后一位 iOS Objective C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44065814/

相关文章:

objective-c - 为什么这个从 NSData 对象创建的 NSString 无法显示它有内容?

ios - Ansible regex_findall 多个字符串

ios - 如何告诉 ABPeoplePickerNavigationController 只列出有电子邮件地址的联系人?

ios - 在 IBOutletCollection 中设置 UIButtons 的单独标题

android - 如何创建一个可以订阅来自 drupal CMS 的推送通知的 Angular 应用程序?

ios - Xcode 7.1分配工具SIP合适

ios - 使用 CocoaPods 在多个目标中引用 Firebase 时,构建运行但存档失败

ios - 处理后构建未在测试飞行中显示?

objective-c - NSString : easy way to remove UTF-8 accents from a string?

iphone - NSString基础知识-内存-保留-复制