“expressionValueWithObject”方法可以将数字解释为浮点数而不是整数吗?

2023-12-02

我正在制作一个计算器,它将输入记录在名为“inputLabel”的标签中,然后在名为“outputLabel”的不同标签中输出答案(类似于图形计算器)。用户完成输入表达式后,表达式将存储在一个 NSString 对象,然后使用 NSPredicate 类进行解析,并使用 NSExpression 类进行评估。我所拥有的有效,但我注意到对于特定操作,答案不正确。例如,如果用户在计算器中输入“25/2”返回 12,这显然是不正确的。但是,如果用户输入“25/2.0”或“25.0/2”,计算器将返回 12.5,这就是我想要的。似乎 NSExpression 方法“expressionValueWithObject”将操作数解释为整数而不是浮点数。如果是这种情况,有没有办法更改“expressionValueWithObject”方法以将操作数解释为浮点数?

Brain.m

-(float)performCalculation: (NSString *)operation
{
    NSPredicate *parsed = [NSPredicate predicateWithFormat:[operation stringByAppendingString:@"=1.0"]];
    NSExpression *inputExpressionParsed = [(NSComparisonPredicate *)parsed leftExpression];
    NSNumber *result = [inputExpressionParsed expressionValueWithObject:inputExpressionParsed context:nil];

    return [result floatValue];
}

视图控制器.m

- (IBAction)equalsPressed:(id)sender
{
    //self.inputLabel.text = [self.inputLabel.text stringByAppendingString:@".0"];
    NSString *inputExpression = self.inputLabel.text;
    self.inputLabel.text = [self.inputLabel.text stringByAppendingString:@"="];
    float result = [self.brain performCalculation:inputExpression];
    self.outputLabel.text = [NSString stringWithFormat:@"%g", result];
}

No, NSExpression不可以这样做。您可以尝试将“.0”附加到所有整数 在评估字符串之前,但更好的解决方案可能是使用“适当的” 例如,数学表达式解析器https://github.com/davedelong/DDMathParser

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“expressionValueWithObject”方法可以将数字解释为浮点数而不是整数吗? 的相关文章

  • UISearchBar 在单击时修改其框架/边界

    我正在尝试将 UISearchController 放置在我的应用程序 UI 中 布局是 黄色 ViewController 红色 另一个 ViewController 黑色 YellowViewController 中的容器 我想将 UI
  • NSUserDefaults 无法保存 NSMutableDictionary

    我尝试使用以下代码将 NSMutableDictionary 保存到 NSUserDefaults NSUserDefaults def NSUserDefaults standardUserDefaults NSMutableDictio
  • 获取动画 UIImageview 的坐标

    我正在水平位置对 UIImageview 进行动画处理 为此我使用了下面的代码我使用了 NSTimer timer NSTimer scheduledTimerWithTimeInterval 0 2 target self selecto
  • 在 UITableViewCell 中动态显示秒表计时器

    我想保存计时器值并从新的开始显示它UITableViewCell但我的问题是 我成功地能够在第一个单元格上显示秒表计时器 但是当我尝试在其中添加新单元格时UITableView所以我的计时器设置为第二个单元格 我无法定义如何让我的第一个计时
  • 在屏幕外绘制 uiview

    我想创建一个 UIView 它在调用 ViewDidLoad 时位于屏幕外 但一旦调用某个函数 我就会将其动画显示到屏幕上 用于对 UIView 进行动画处理的代码很好 但我似乎无法从屏幕外绘制 UIView 我已将故事板中的 UIView
  • UITextField:键盘出现时移动视图

    我目前正在开发一个具有单个视图的 iPhone 应用程序 该应用程序有多个 UITextFields 用于输入 当键盘显示时 它会覆盖底部的文本字段 所以我添加了相应的textFieldDidBeginEditing 方法 将视图向上移动
  • 继承属性,从 readonly 继承的属性中读写时不会合成 setter

    我在使用属性时发现了一个奇怪的行为 该属性被继承为只读 然后在继承的类中重新声明为读写 In A h interface A NSObject property nonatomic strong readonly NSObject some
  • UIView表面自定义变换/动画(如“水滴效果”)

    实施方式是什么自定义转换 动画 在视图表面 类似于所附图片 not只是视图边界 问题主要在于一般的方法是什么做到这一点 不完全是 水滴效应 但任何例子肯定会受到赞赏 我想 这是层布局 网格 的某种 算法 转换 但不确定以哪种方式 挖掘 它
  • iOS7上UITableViewCell显示白色背景且无法修改

    我已经实现了一个继承自的自定义表格视图单元格类UITableViewCell 表格视图包含背景图像 所以我希望单元格的背景是透明的 iOS7之前看起来很棒 然而 在 iOS7 中 单元格始终显示为白色背景 即使对于 Xcode7 2015
  • MFMailComposeViewController 立即关闭

    情况是 MFMailComposeViewController 将被呈现 我看到它已经完成了一半 但后来就被驳回了 这是错误 serviceViewControllerReady 错误 错误域 UIViewServiceInterfaceE
  • 如何读取 IBAction 中的 UITextField 值。我正在以编程方式创建 UITextField

    我怎样才能阅读UITextField值在IBAction 我正在创造UITextField以编程方式 所以我无法设置 property and synthesize使用 Xcode 要生成的代码UITextField如下 for i 0 i
  • 预填充 UICollectionView 单元重用队列

    问题 我有一个应用程序 只有一个UICollectionView我第一次滚动它时很卡顿 我已将来源范围缩小到正在创建新单元格 2 的事实 使用initWithFrame 因为周围没有可以重复使用的细胞 初始滚动后 重用队列不为空 单元格可以
  • 如何将 UIImage 添加到分组的 UITableViewCell 中,使其圆角?

    我正在尝试将图像添加到分组 UITableView 中的表格单元格 但图像的角未被剪裁 剪切这些内容的最佳方法是什么 除了在 Photoshop 中剪切它们之外 表格内容是动态的 例如 表格中的第一张图像只需将左上角圆角化即可 这是我的解决
  • 在后台线程上搜索

    我试图在 iPhone 应用程序中搜索数千个对象 但是搜索严重滞后 每次击键后 UI 都会冻结 1 2 秒 为了防止这种情况 我必须在后台线程上执行搜索 我想知道是否有人有一些在后台线程上搜索的提示 我读了一点NSOperation并在网上
  • UITableView 在单元格刷新时滚动到顶部

    我有一个 UITableView 其中一个单元格的大小是动态调整的 以适应其中的 UITextView 每当键入一个键时 单元格都会检查计算出的高度是否增加 就像换行符一样 因此它可以告诉表单元格的高度需要重新计算 我用这段代码做到了这一点
  • iOS 低内存崩溃,但内存使用率非常低

    这已经困扰我很长时间了 我的应用程序运行占用大约 2 74MB 内存 没关系 但当它创建 UIWebView 时 它会增加到大约 5 87MB 并继续崩溃 这些是在我的第一代 iPad 上运行时仪器中的实时字节下给出的值 我找不到崩溃日志
  • 如何将 NSMutableArray 添加到 NSMutableArray Objective-c

    我正在从 Java 切换到 Objective c 但遇到了一些困难 我已经搜索过这个问题但没有取得太大成功 我有一个存储 NSMutableArrays 的 NSMutableArray 如何向数组添加数组 您可以在数组中存储对另一个数组
  • 如何将设备上未保存的图片上传到dropbox帐户?(IOS)

    Dropbox RestClient 仅保存文件 所以我想先将图像保存在本地文件夹中 然后上传它 结果它保存了文件 但它已损坏 NSString localPath NSBundle mainBundle pathForResource I
  • 自动生成的 Swift 桥接标头中“找不到接口声明”

    我当前的项目包含 Swift 和 Objective C 代码 两种类型的源文件都使用另一种语言的代码 当我进行完全清理并重新编译时 几乎每个 Swift 类声明都出现错误Module Swift h 形式为 Cannot find int
  • Objective-C 点表示法与类方法?

    请注意 我特别指的是点表示法与类方法一起使用 而不是与实例方法一起使用 出于好奇 我想看看如果我尝试在类方法中使用 Objective C 点表示法语法会发生什么 我的实验如下 import

随机推荐

  • 在 Qt 应用程序及其插件中使用 Singleton 类

    我正在尝试在我的 Qt 应用程序中使用 Singleton 类 它是一个名为 PrisLog 的程序范围调试记录器 该程序还有插件 我想让我的单例类可供这些插件使用 但这不起作用 据我所知 尝试在插件中使用该类会导致创建另一个实例 单例类只
  • 将 json 写入 cookie 时为什么要使用encodeURIComponent()

    特别是 当将 JSON 保存到 cookie 时 仅保存原始值是否安全 我不想编码的原因是因为json的值和键很小 但结构复杂 所以编码 替换所有的 和 大大增加了字符串长度 如果您的值包含 JSON 字符 例如逗号 引号 等 那么您可能应
  • React-native 与 Facebook 广告的世博问题

    尝试从 Facebook 显示插页式广告时出现错误 新应用不再支持广告请求中的 SDK 版本 请升级到 SDK 的最新版本之一 您是否知道它是否会在 expo 32 版本中修复 更新 fb sdk 32世博会什么时候发布 更新2019 01
  • 如何以编程方式更改选项卡指示器颜色

    I am 安卓新手 在开始编程之前我发现现在很多应用程序都在使用 Fragment 尤其是具有可滑动视图的选项卡 如何改变选项卡指示器 突出显示颜色 我用谷歌搜索并以编程方式将 ActionBar 颜色更改为红色 但不知道如何将选项卡指示器
  • 具有统一块 (UBO) 的实例名称无法使用 OpenGL/GLSL

    我在 OpenGL GLSL 应用程序中实现了一个统一的块来管理网格材质数据 环境光 漫反射光 镜面光和光泽度 对于我的第一次尝试 我实现了以下统一块语法 uniform MaterialBlock vec3 Ka Kd Ks float
  • Xcode 8.3 存档错误:链接器命令失败,退出代码 1

    仅在从 Xcode 8 2 升级到 Xcode 8 3 后我才开始收到此错误 并且仅在进行存档构建时 调试构建工作正常 当我通过 Xcode 进行存档时 我收到的唯一消息是 链接器命令失败 退出代码为 1 使用 v 查看调用 我用命令行构建
  • OpenCL 全局内存获取

    我正在考虑重新设计我的 GPU OpenCL 内核以加快速度 问题是有大量全局内存没有合并 并且提取确实降低了性能 因此 我计划将尽可能多的全局内存复制到本地 但我必须选择要复制的内容 现在我的问题是 多次提取小块内存是否会比更少提取大块内
  • php - 在偏移处添加字符串?

    如果我有一个像 test 这样的字符串 那么我有偏移量 0 3 的字符 我想在偏移量 6 处添加另一个字符串 是否有一个简单的 PHP 函数可以做到这一点 我正在尝试这个 但出现错误 PHP 致命错误 无法将赋值操作符与重载对象一起使用 也
  • 为什么 `int ;` 在 C 中编译得很好,但在 C++ 中却不行?

    考虑以下程序 参见现场演示here include
  • MATLAB 单图中的多个(并行)箱线图

    我正在使用 MATLAB 中的箱线图函数 我需要为 6 个 XTicks 绘制 6 个不同数据集的箱线图 即 x 轴中的每个刻度应包含 6 个相应的框 晶须 中线和其域内的异常值集 我尝试通过设置每个变量的偏移量来操作 XTick 属性 但
  • 确定谁调用事件处理程序

    我的应用程序中写入了标签 以便在修改其文本时进行集中 为此 我通过 EventHandler 调用一个方法 我想对每个标签使用相同的方法 但我不知道如何在方法中识别哪个标签调用它 如果我有这样的代码 lbl TextChanged obje
  • 使用 Jquery、PHP 下载 Ajax 文件

    我想使用 ajax 功能进行下载 用户将单击下载链接 该链接将 使用 ajax 和 GET 访问 PHP 文件 该文件将处理发送的 GET 变量并访问正确的文件进行下载 我有一些 PHP 脚本来处理 GET 变量 它们可以独立工作 但是当使
  • 设置类中对象的名称

    我想将类的名称设置为类中的变量之一 以便当我打印类时我得到它们的名称 我尝试设置 name 但它不起作用 这是我的课 class SNMPData object def init self device speed down 0 speed
  • 如何在 salesforce 中进行单元测试?

    我已经在 salesforce 上编写了代码 为了发布单元测试必须至少涵盖75 我面临的是classOne调用方法classTwo还必须覆盖classTwo的单元测试一级内即使它是在classTwo已经文件了 文件我的班级二 public
  • Yii2:根据相关表中的另一个字段自动填充字段

    我有一个 MySQL 表和模型patient entry其中包含字段patient name city and state 我还有另一个桌子 模型health card其中还包含patient name city and state 假设p
  • iOS/UI 自动化:UIAActionSheet 无法使用按钮进行操作

    我的问题与 XCode 的 Instruments 工具中的 UI 自动化模板有关 UI自动化如何支持UIActionSheet测试 我知道有一个 UIAActionSheet 元素 并且我能够在我的应用程序中获取它 但我不知道如何从操作表
  • gcloud auth登录抛出错误:gcloud崩溃(ConnectionError):HTTPSConnectionPool(host ='oauth2.googleapis.com',port = 443):超出最大重试次数

    gcloud builds submit昨天对我来说失败了 然后我尝试了gcloud config set project 那也失败了 所以我认为登录可能已过期所以尝试了gcloud auth login 在所有情况下 它总是抛出以下错误
  • Python tkinter查找单击了哪个按钮[重复]

    这个问题在这里已经有答案了 我正在尝试实现一个名为 五连胜 的游戏 我创建了一个 15 15 的列表来放置按钮 我使用 range 16 因为我还想要一行和一列来显示行号和列号 我希望我的实现就像单击按钮时一样 它变成一个标签 但我不知道用
  • Numpy:按行减去 2 个 numpy 数组

    我有 2 个 numpy 数组 a 和 b 如下 a np random randint 0 10 3 2 Out 124 array 0 2 6 8 0 4 b np random randint 0 10 2 2 Out 125 arr
  • “expressionValueWithObject”方法可以将数字解释为浮点数而不是整数吗?

    我正在制作一个计算器 它将输入记录在名为 inputLabel 的标签中 然后在名为 outputLabel 的不同标签中输出答案 类似于图形计算器 用户完成输入表达式后 表达式将存储在一个 NSString 对象 然后使用 NSPredi