关于用javascript实现科学计算器功能的思路
发布网友
发布时间:2022-04-21 04:33
我来回答
共5个回答
懂视网
时间:2022-05-12 12:39
这篇文章主要为大家详细介绍了JavaScript实现计数器的基础方法
,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了js实现计数器的具体代码,供大家参考,具体内容如下
通过使用 JavaScript,设定的时间间隔之后来执行代码,而不是在函数被调用后立即执行。称之为计时事件。
在 JavaScritp 中使用计时事件是很容易的,两个关键方法是:
setInterval() - 间隔指定的毫秒数不停地执行指定的代码。
setTimeout() - 暂停指定的毫秒数后执行指定的代码
Note: setInterval() 和 setTimeout() 是 HTML DOM Window对象的两个方法。在这里只介绍了setTimeout()方法;
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script type="text/javascript">
var c = 0
var t
function timedCount() {
document.getElementById('txt').value = c;
c = c + 1;
//创建计时器,在指定周期内循环执行
t = setTimeout("timedCount()", 1000);
}
function stopCount() {
//清除计时器
clearTimeout(t);
}
</script>
</head>
<body>
<form>
<input type="button" value="开始计时!" onClick="timedCount()">
<input type="text" id="txt">
<input type="button" value="停止计时!" onClick="stopCount()">
</form>
</body>
</html>
效果:
点击开始则会从0开始计数,停止计时则会暂停在那个时刻,再点击开始则会继续累加计数...但是这个程序有一个小bug,当不停的点击开始计时,计时的速度会增加,而且点击一次停止计时不会停止,要响应的点击很多次才可以停止.....
热心网友
时间:2022-05-12 09:47
构建一个数学表达式的字符串,然后用 eval函数 (http://www.w3school.com.cn/js/jsref_eval.asp) 执行,返回值就是该表达式的值;这是最简单的方法。
sin、log、e、pi 用Math对象的方法或属性来代替。字符串替换函数replace (http://www.w3school.com.cn/js/jsref_replace.asp)
'sin(12)+log(23)*sqrt(2)'.replace(/(sin|cos|tan|log|sqrt)/g,'Math.$1');
注意:
1. 最好能检测用户输入的表达式(基础检查:没有非法字符如&~ßä;高级检查:括号是否对称,运算符是否正确 以及错误时的处理方法),否则js执行出错的几率会很大。
2. log表示的其实是数学中的ln。使用到数学中的log时可以用 换底公式(http://ke.baidu.com/view/1920827.htm) 变形。
z.B:
eval('Math.sin(Math.PI/2)'); // 1
eval('Math.sin(3*Math.PI/2)'); // -1
eval('Math.log(Math.exp(3))'); // 3
eval('sin(12)+log(23)*sqrt(2)'.replace(/(sin|cos|tan|log|sqrt)/g,'Math.$1')); // 3.8976855269089623
-----------------------------
Math 对象属性
FF: Firefox, IE: Internet Explorer
属性 描述 FF IE
E返回算术常量 e,即自然对数的底数(约等于2.718)。13
LN2返回 2 的自然对数(约等于0.693)。13
LN10返回 10 的自然对数(约等于2.302)。13
LOG2E返回以 2 为底的 e 的对数(约等于 1.414)。13
LOG10E返回以 10 为底的 e 的对数(约等于0.434)。13
PI返回圆周率(约等于3.14159)。13
SQRT1_2返回返回 2 的平方根的倒数(约等于 0.707)。13
SQRT2返回 2 的平方根(约等于 1.414)。13
Math 对象方法
FF: Firefox, IE: Internet Explorer
方法描述FFIE
abs(x)返回数的绝对值。13
acos(x)返回数的反余弦值。13
asin(x)返回数的反正弦值。13
atan(x)以介于 -PI/2 与 PI/2 弧度之间的数值来返回 x 的反正切值。13
atan2(y,x)返回从 x 轴到点 (x,y) 的角度(介于 -PI/2 与 PI/2 弧度之间)。13
ceil(x)对数进行上舍入。13
cos(x)返回数的余弦。13
exp(x)返回 e 的指数。13
floor(x)对数进行下舍入。13
log(x)返回数的自然对数(底为e)。13
max(x,y)返回 x 和 y 中的最高值。13
min(x,y)返回 x 和 y 中的最低值。13
pow(x,y)返回 x 的 y 次幂。13
random()返回 0 ~ 1 之间的随机数。13
round(x)把数四舍五入为最接近的整数。13
sin(x)返回数的正弦。13
sqrt(x)返回数的平方根。13
tan(x)返回角的正切。13
toSource()返回该对象的源代码。1-
valueOf()返回 Math 对象的原始值。14
参考资料:http://www.w3school.com.cn/js/jsref_obj_math.asp
热心网友
时间:2022-05-12 11:05
这个主要涉及到的是字符串分析。
(1 + 3)× 2 - 1
拿这个输入来分析。
那么首先我要有一个循环,循环这个字符串。
循环里边要判断当前字符的类型,比如着一个,我检查到当前字符是“(”号,
那么我下边的逻辑就是要找到“)”号。然后我要再对内部的东西进行循环。
依此类推,分析函数可以做成递归调用,模拟一下栈。
这是分析方法,当然首先你要确认你要进行几种运算,即,你的软件边界是什么,
如果只是加减运算,逻辑可能会简单很多。
希望对你有帮助。
热心网友
时间:2022-05-12 12:39
简单点的.定义三个变量,比如a,b,o, a用来保存第一个操作数,o用来保存操作符(即+-*/),b用来保存第二个操作数,当a,b,o都有数据并按等号或另一个操作符后,按a,o,b的顺序按字符串连接,然后用eval函数取结果,存入a变量,同时清空o和b变量.回显a变量的值.如果按的是等号以外的操作符,则将操作符存入o变量.
热心网友
时间:2022-05-12 14:31
<script type="text/javascript">
<!--
var num=eval("7*9");
document.write(num);
//-->
</script>
看来你有够懒