我有这个 Java 代码,但我不知道如何在其中引入 power,sin,cos 或其他函数。我寻找它的各种网站,但没有运气找到它
public class calculator extends Activity {
private WebView mWebView;
private StringBuilder mMathString;
private ButtonClickListener mClickListener;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.calculator);
// Create the math string
mMathString = new StringBuilder();
// Enable javascript for the view
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
// Set the listener for all the ons
mClickListener = new ButtonClickListener();
int idList[] = { R.id.on0, R.id.on1, R.id.on2,
R.id.on3, R.id.on4, R.id.on5, R.id.on6,
R.id.on7, R.id.on8, R.id.on9, R.id.onLeftParen,
R.id.onRightParen, R.id.onPlus, R.id.onPlus,
R.id.onMinus, R.id.onDivide, R.id.onTimes,
R.id.onDecimal, R.id.onBackspace, R.id.onClear, R.id.onPow };
for(int id : idList) {
View v = findViewById(id);
v.setOnClickListener(mClickListener);
}
}
private void updateWebView() {
StringBuilder builder = new StringBuilder();
builder.append("<html><body>");
builder.append("<script type=\"text/javascript\">document.write('");
builder.append(mMathString.toString());
builder.append("');");
builder.append("document.write('<br />=' + eval(\"");
builder.append(mMathString.toString());
builder.append("\"));</script>");
builder.append("</body></html>");
mWebView.loadData(builder.toString(), "application/xhtml", "UTF-8");
}
private class ButtonClickListener implements OnClickListener {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.onBackspace:
if(mMathString.length() > 0)
mMathString.deleteCharAt(mMathString.length()-1);
break;
case R.id.onClear:
if(mMathString.length() > 0)
mMathString.delete(0, mMathString.length());
break;
default:
mMathString.append(((Button) v).getText());
}
updateWebView();
}
}
}
有人能说一下如何引入幂函数吗?
您可能想看看 Java 的Math package。它有很多数学函数,包括您正在寻找的函数。如果导入还没有,您可能需要在使用 Math 函数的文件的开头添加import java.lang.Math;
的导入。
例如,double answer = Math.pow(firstnum,secondnum);
是将一个数提升到另一个数的幂的函数,或者double answer = Math.sin(anum)
给出变量 anum 中某个值的 sin,依此类推。
当您阅读该类的 javadoc 时,您将看到其他功能,这些功能应提供所需的其余“科学”计算器功能。
还请记住,整数和双精度确实限制了它们的存储容量,因此如果有人决定做一些疯狂的事情,例如 100,000 ^ 100,000,000,您可能需要考虑如何处理溢出。如果对于真正的大数有足够的精度对您很重要,您可能还需要查看类,例如BigDecimal或BigInteger。
要回答这个问题,我想你真的想知道,这是 code 如何计算数学函数,而无需使用 Java 的数学包...
您正在查看的代码将一堆 javascript 打印到 HTML 页面,包括eval("your math expression")
与 eval 中输入的数学表达式,并且该 eval 行实际上正在进行数学评估,并且它正在使用 javascript,而不是 Java 来实际进行数算。
http://javascriptsource.com/math-related/5-function.html有使用 javascript 的 eval 函数做权力的例子...你必须修改应用程序生成的 javascript 才能以这种方式评估权力。
Java 在java.lang.Math
类中内置了这些函数作为静态方法。
您可以像这样调用它们:
Math.pow(double,double)
double number = 3.42d;
double exponent = 5.14d;
double power = Math.pow(number, exponent);
Square Root,usingMath.sqrt(double)
double shortSide1 = 4.0d;
double shortSide2 = 3.0d;
double longSide = Math.sqrt(shortSide1 * shortSide1 + shortSide2 * shortSide2);
// All credits goto Pythagoras.
罪恶,cos,棕褐色
double angle = 2.1;
double sin = Math.sin(angle);
double cos = Math.cos(angle);
double tan = Math.tan(angle);
Arcsin,arccos,arctan
double value = 0.1;
double asin = Math.asin(value);
double acos = Math.acos(value);
double atan = Math.atan(value);
所有这些函数都是 Native(不是用 Java 编写的),这意味着它们将在您的平台上尽可能好地执行。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(42条)