从Excel到Objective-C的公式

问题

我试图直接从Excel中移植这个公式。 但是,最终的结果是不一样的。 我会提供我的尝试以及Excel的正确版本。 有人可以向我提供有关错误的信息吗?

高强

=EXP(E3*C7)*0.108*C4*C4/C5*C6/35

在下一个公式中

 E3 = T C7 = TF C4 = S C5 = St C6 = F 

Objective-C的

 double exposure = exp((T * TF) * 0.108 * S * S / St * FF / 35); 

甚至

 double exposure = exp(T * TF) * 0.108 * S * S / St * FF / 35; 

返回错误。

但是,他们之间的最终结果是不一样的。 我也尝试了大多数提供的指数types。

例如,excel返回5.2,而目标c返回5.65。

转发说我绝对不知道目标c,但使用这个编译器我运行这个代码返回5.248942。 这与我在Excel中获得的值相同。

 #import <Foundation/Foundation.h> int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; float T = 0.767717; float TF = 1.1; float S = 20; float St = 19.15; float FF = 35; double exposure = exp(T * TF) * 0.108 * S * S / St * FF / 35; NSLog(@"%f", exposure); [pool drain]; return 0; } 

我可能应该一直使用双打,但有足够的精度这些数字。

很有可能你已经将这些variables中的一个声明为较低分辨率的types,例如,作为赋值的float被截断。

Objective-C和Numbers同声明时(我不能擅长,因为我高兴地不拥有一个副本)。 为这些variables创造价值…

 double T = 1.1; double TF = 2.2; double S = 3.3; double St = 4.4; double FF = 5.5; double exposure = exp(T * TF) * 0.108 * S * S / St * FF / 35.; NSLog(@"%f", exposure); // logs 0.472374 

数字,从这个公式产生相同的值:

在这里输入图像说明

正如… 在这里输入图像说明