Objective c 目标c是否遵循操作顺序(Bedmas)?
我只是想知道,因为我构建的应用程序做了一个很长的等式,结果与在Excel电子表格上得到等式的结果不同。输入的数字越高,差值越大。这是我在xcode中输入的方程式:Objective c 目标c是否遵循操作顺序(Bedmas)?,objective-c,excel,equation,Objective C,Excel,Equation,我只是想知道,因为我构建的应用程序做了一个很长的等式,结果与在Excel电子表格上得到等式的结果不同。输入的数字越高,差值越大。这是我在xcode中输入的方程式: 360*num1*num3*(1-powf(14.9/num1,0.286)) (num1和num3是输入的数字)。 以下是Excel计算: =360*R9*R11*(1-((R10/R9)^0.286)) (R9等于num1,R11等于num3,R10等于14.9) 我看不出方程式有什么不同,但如果有,请指出。我的问题是,这两个问题
360*num1*num3*(1-powf(14.9/num1,0.286))
(num1和num3是输入的数字)。
以下是Excel计算:
=360*R9*R11*(1-((R10/R9)^0.286))
(
R9
等于num1
,R11
等于num3
,R10
等于14.9)
我看不出方程式有什么不同,但如果有,请指出。我的问题是,这两个问题中的一个(可能是ob-c问题)正在做一些与我预期不同的事情。是的。Objective-C是C的超集 因此,C所具有的所有特性,Objective-C也具有这些特性
360 * num1 * num3 * (1 - powf(14.9 / num1, 0.286)) (num1 and num3 are the input numbers)
A * num3 * (1 - powf(14.9 / num1, 0.286))
B * (1 - powf(14.9 / num1, 0.286))
B * (1 - powf(C, 0.286))
B * (1 - D)
B * (E)
F
仅供参考,BEDMAS并没有被完全遵循。如果D&M在同一级别,最左边的将首先被评估,A&S的规则也是如此。然而,这看起来没什么大不了的,但是当涉及到截断和用十进制数取整时,会产生一个大问题
a * b / c is calculated as "(a*b) / c"
鉴于
a / b * c is calculated as "(a/b) * c"
知道为什么答案会不同吗?如果num1是300,num3是1,xcode给我62239,xcel给我6223962205@user19309311.不是Xcode计算的,而是C库的数学函数。2.浮点数是不精确的,可能会出现微小的差异,特别是如果您使用的函数是
exp()
360*300*1*(1-(14.9/300)^0.286)
实际上是62238.70043,那么您的excel计算是错误的,C是正确的。好的,谢谢!我有点担心,因为计算必须非常精确。@H2CO3因为有人用Excel计划/平衡/测试这个公式?例如,一些游戏设计师这样做是为了平衡游戏中实体的统计数据。括号、求幂、除法、乘法、加法、减法。你应该检查单元格R9、R10和R11是否包含你认为它们包含的数字——如果你输入你认为单元格包含的数字,你就会得到“正确”的答案。