编写一个评估表达式的程序
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'
还有其他任何方式来做负数的力量。我尝试过其他方式,但它没有工作
答案 0 :(得分:1)
使用double,而不是float。 float只能为您提供小于8位数的精度。除非你能解释为什么要使用float,否则请使用double。
传统的以“科学格式”编写数字的传统方式,自1970年左右开始在C中编写,但在FORTRAN中更早,在第一个数字中为3.31E-8,第二个为2.01E-7,依此类推。
所以:
double result = 3.31E-8 + 2.01E-7 / 7.16E-6 + 2.01E-8;
你写的括号错了。或者你原来的公式错了,不能说哪一个。
答案 1 :(得分:0)
答案必须
result =(3.31e-8 + 2.01e-7)/(7.16e-6 + 2.01e-8);
您可以使用此stack exchange link来更好地理解。
为了使用更少的字符,而不是10^(-8)
或其他任何程序员应该写10.0e-8
。
这是解决问题的最佳方法。