gpt4 book ai didi

cocoa - 正确使用 expressionValueWithObject

转载 作者:行者123 更新时间:2023-12-03 17:49:13 30 4
gpt4 key购买 nike

我一直在尝试使用 NSExpression 的 expressionValueWithObject() 完成一些基本数学运算,但结果不一致。

例如,以下内容都可以正常工作:

NSExpression(format: "1+1").expressionValueWithObject(nil, context: nil) as? Float

(返回 2)

NSExpression(format: "1+1.2").expressionValueWithObject(nil, context: nil) as? Float

(返回 2.2)

NSExpression(format: "2**3").expressionValueWithObject(nil, context: nil) as? Float

(返回 8)

NSExpression(format: "sqrt(2**3)").expressionValueWithObject(nil, context: nil) as? Float

(返回 2.82...)

NSExpression(format: "log(2**3)").expressionValueWithObject(nil, context: nil) as? Float

(返回 0.903...)

但是其他字符串方程,看起来并不比这些更复杂,会产生错误的答案或根本没有答案。例如,

NSExpression(format: "1+(1/2)").expressionValueWithObject(nil, context: nil) as? Float

(返回 1,而不是 1.5)

NSExpression(format: "43 % 2").expressionValueWithObject(nil, context: nil) as? Float

(返回错误,尽管 Swift 本身可以使用相同的符号计算 43 Mod 2)

在最后两个例子中我做错了什么?

最佳答案

built-in binary operators supported by NSExpression是有限的。不支持 %。这是 this question 中的一个可能的解决方案:

NSExpression(format: "modulus:by:(43,2)").expressionValueWithObject(nil, context: nil) as? Float

1+(1/2) 毫不奇怪地通过整数除法计算。使用 1+(1/2.0) 返回 1.5。

关于cocoa - 正确使用 expressionValueWithObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32912598/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com