Objective-c 负数的幂

Objective-c To the power of a negative

编写一个计算表达式的程序

3.31 × 10^(-8) + 2.01 × 10^(-7) ÷ 7.16 × 10^(-6) + 2.01 × 10^(-8)

回答

float result;

result = (3.31 * 10.0e + 2.01 * 10.0e-8) / (7.16 * 10.0e-6 + 2.01 * 10.0e-8);

NSLog(@"%e",result);

这是我找到的答案,但请解释指数部分以及为什么我需要 'e' 还有其他方法可以处理负数的幂数字。我试过用其他方式做,但没有用

答案必须是

result = (3.31e-8 + 2.01e-7) / (7.16e-6 + 2.01e-8);

您可以使用这个 stack exchange link 来更好地理解。 为了使用更少的字符,程序员应该写 10.0e-8 而不是 10^(-8) 或其他任何东西。

这是最好的解决方法

在C语言中(以及扩展,Objective-C),3×105写成3e5。这就是C中科学记数法的简单表示方式。因此,你可以这样写:

float result = 3.31e-8 + 2.01e-7 / 7.16e-6 + 2.01e-8;
NSLog(@"%e", result);

请注意,如果您的原始数学表达式也包含括号,则您的 C 表达式应该只包含括号。

使用double,而不是float。 float 最多只能给你不到 8 位数的精度。除非你能用一些充分的理由解释为什么要使用 float,否则请使用 double。

从大约 1970 年开始,在 C 语言中 "scientific format" 编写数字的传统方式,但在 FORTRAN 中更早,第一个数字是 3.31E-8,第二个数字是 2.01E-7等等。

所以:

double result = 3.31E-8 + 2.01E-7 / 7.16E-6 + 2.01E-8;

你写的括号是错误的。或者你原来的公式是错误的,不能说是哪一个。