通行证│用户名: 密码: 验证码: 验证码,看不清楚?请点击刷新验证码 电信网通铁通移动   在线
资源搜索:
热门搜索:Linux VB C语言 PhotoShop Flash TCP/IP
   首页 | 文章 | 软件 | 动画 | 资源 | 励志 | 骗术 | 论坛 | 邮箱 | 会员中心 | 军事 | 科技 | 博客 | 图片 | 商城 | 最新更新 | 800g资源 | 爱心黑客
您现在的位置: 爱国者黑客 >> 资源 >> 媒体动画 >> Flash >> Action Script >> 文章正文
用as设计计算器,按照运算法则运算
责任编辑:admin   更新日期:2005-8-6
2-n*Ave*Ave)/n)
function S() {
if (data != undefined) {
if (data.length == 0) {
datas.S = 0;
value = "0";
} else if (datas.S != undefined) {
value = datas.S.toString(systems);
} else {
if (datas.Ave == undefined) {
//计算Ave
if (datas.Sum != undefined) {
var num:Number = datas.Sum;
} else {
var num:Number = 0;
for (var i in data) {
num += data[i];
}
}
datas.Ave = num/data.length;
}
//计算Sum2
if (datas.Sum2 == undefined) {
var num2:Number = 0;
for (var j in data) {
num2 += data[j]*data[j];
}
datas.Sum2 = num2;
}
//计算S
datas.S = Math.sqrt((datas.Sum2-data.length*datas.Ave*datas.Ave)/data.length);
value = datas.S.toString(systems);
}
isnew = true;
CounterMessage("S");
}
}
//求总体参数为n-1的标准差
//S2=Math.sqrt((Sum2-(n-1)*Ave*Ave)/(n-1))
function S2() {
if (data != undefined) {
if (data.length == 0) {
datas.S2 = 0;
value = "0";
} else if (datas.S2 != undefined) {
value = datas.S2.toString(systems);
} else {
if (datas.Ave == undefined) {
//计算Ave
if (datas.Sum != undefined) {
var num:Number = datas.Sum;
} else {
var num:Number = 0;
for (var i in data) {
num += data[i];
}
}
datas.Ave = num/data.length;
}
//计算Sum2
if (datas.Sum2 == undefined) {
var num2:Number = 0;
for (var j in data) {
num2 += data[j]*data[j];
}
datas.Sum2 = num2;
}
//计算S
datas.S2 = Math.sqrt((datas.Sum2-(data.length-1)*datas.Ave*datas.Ave)/(data.length-1));
value = datas.S2.toString(systems);
}
isnew = true;
CounterMessage("S2");
}
}
//添加数据
function Data() {
if (data != undefined) {
if (systems == 10) {
data.push(Number(value));
} else {
data.push(parseInt(value, systems));
}
datas = {Ave:undefined, Ave2:undefined, Sum:undefined, Sum2:undefined, S:undefined, S2:undefined};
isnew = true;
CounterMessage("Data");
}
}
//将数据显示在显示框中
function load(n:Number) {
if (data != undefined) {
value = data[n].toString(systems);
isnew = true;
CounterMessage("load");
}
}
//清除数据
function clear(n:Number) {
if (data != undefined) {
data = data.slice(0, n).concat(data.slice(n+1));
isnew = true;
CounterMessage("clear");
}
}
//清除全部数据
function clearAll() {
if (data != undefined) {
data = [];
isnew = true;
CounterMessage("clearAll");
}
}
// 显示Math.PI
function PI() {
if (systems == 10) {
value = String(Math.PI);
isnew = true;
CounterMessage("PI");
}
}
//******************************************************************
//私有函数
//根据运算符号计算,与evals和evalPow构成了计算的核心
private function calculate():String {
var c:Array = count;
//trace(c)
if (c.length == 1) {
if (c[0].substr(-1, 1) == "^") {
var st = Math.max(c[0].lastIndexOf("*"), c[0].lastIndexOf("/"));
if (st != -1) {
var n:Number = evals(c[0].slice(0, st));
c[0] = n.toString()+c[0].slice(st);
return evals(c[0].slice(st+1, -1)).toString(systems);
} else {
var n:Number = evals(c[0].slice(0, -1));
c[0] = n.toString()+"^";
return n.toString(systems);
}
} else if (c[0].substr(-1, 1) == "*" || c[0].substr(-1, 1) == "/") {
var n:Number = evals(c[0].slice(0, -1));
c[0] = n.toString()+c[0].substr(-1, 1);
return n.toString(systems);
} else {
var n:Number = evals(c[0]);
c[0] = n.toString();
return n.toString(systems);
}
} else if (c.length == 2) {
var n:Number = evals(c[0]);
c[0] = n.toString();
return n.toString(systems);
} else if (c.length == 3) {
if (c[2].substr(-1, 1) == "^") {
var st = Math.max(c[2].lastIndexOf("*"), c[2].lastIndexOf("/"));
if (st != -1) {
var n:Number = evals(c[2].slice(0, st));
c[2] = n.toString()+c[2].slice(st);
return evals(c[2].slice(st, -1)).toString(systems);
} else {
var n:Number = evals(c[2].slice(0, -1));
c[2] = n.toString()+"^";
return n.toString(systems);
}
} else if (c[2].substr(-1, 1,) == "*" || c[2].substr(-1, 1) == "/") {
var n:Number = evals(c[2].slice(0, -1));
c[2] = n.toString()+c[2].substr(-1, 1);
return n.toString(systems);
} else {
//trace(c[1])
if (c[1] == "+") {
c[0] = (Number(c[0])+evals(c[2])).toString();
c[1] = c[3];
c.length = 1;
return parseInt2(c[0], 10, systems);
} else if (c[1] == "-") {
c[0] = (Number(c[0])-evals(c[2])).toString();
c[1] = c[3];
c.length = 1;
return parseInt2(c[0], 10, systems);
} else if (c[1] == "%") {
//trace(Number(c[0])%evals(c[2]))
c[0] = (Number(c[0])%evals(c[2])).toString();
c[1] = c[3];
c.length = 1;
return parseInt2(c[0], 10, systems);
}
}
} else if (c.length == 4) {
if (c[1] == "+") {
c[0] = (Number(c[0])+evals(c[2])).toString();
c[1] = c[3];
c.length = 2;
return parseInt2(c[0], 10, systems);
} else if (c[1] == "-") {
c[0] = (Number(c[0])-evals(c[2])).toString();
c[1] = c[3];
c.length = 2;
return parseInt2(c[0], 10, systems);
} else if (c[1] == "%") {
c[0] = (Number(c[0])%evals(c[2])).toString();
c[1] = c[3];
c.length = 2;
return parseInt2(c[0], 10, systems);
}
}
}
//根据运算符号运算
private function evals(n:String):Number {
if (n.indexOf("^") == -1) {
if (n.indexOf("*") == -1 && n.indexOf("/") == -1) {
return Number(n);
} else {
var st:Number;
var st2:String;
var num:Number = Number(n.substr(0, (st=Math.min((n.indexOf("*") == -1) ? Infinity : n.indexOf("*"), (n.indexOf("/") == -1) ? Infinity : n.indexOf("/")))));
n = n.slice(st);
while (n.length>0) {
st2 = n.substr(0, 1);
n = n.slice(1);
var st = Math.min((n.indexOf("*") == -1) ? Infinity : n.indexOf("*"), (n.indexOf("/") == -1) ? Infinity : n.indexOf("/"));
var mu = Number(n.substr(0, (st == Infinity) ? n.length : st));
if (st2 == "*") {
num *= mu;
n = n.slice((st == Infinity) ? 0 : st);
} else if (st2 == "/") {
num /= mu;
n = n.slice((st == Infinity) ? 0 : st);
}
}
return num;
}
} else {
if (n.indexOf("*") == -1 && n.indexOf("/") == -1) {
return evalPow(n);
} else {
var r = new Array();
var size = n.length;
var c = 0;
for (var i = 0; i<=size; ++i) {
if (substring(n, i+1, 1) == "*" || substring(n, i+1, 1) == "/") {
r.push(substring(n, c+1, i-c));
r.push(substring(n, i+1, 1));
c = i+1;
}
}
if (c != i) {
r.push(substring(n, c+1, i-c));
r.push(substring(n, i+1, 1));
}
var num:Number = evalPow(r[0]);
for (var j = 1; j<r.length-1; j += 2) {
if (r[j] == "*") {
num *= evalPow(r[j+1]);
} else {
num /= evalPow(r[j+1]);
}
}
return num;
}
}
}
//计算x^y^z^...
private function evalPow(n:String):Number {
if (n.indexOf("^") == -1) {
return Number(n);
} else {
var st:Number;
var num:Number = Number(n.substr(0, (st=n.indexOf("^"))));
n = n.slice(st+1);
while (n.length>0) {
var st = (n.indexOf("^") == -1) ? n.length : n.indexOf("^");
var mu = Number(n.substr(0, st));
n = n.slice(st+1);
num = Math.pow(num, mu);
}
return num;
}
}
//删除无用的符号
private function duseless() {
if (value.substr(-1) == ".") {
value = value.slice(0, -1);
}
}
//改变数制
private function changeS(n:Number) {
value = parseInt2(value, systems, n);
systems = n;
CounterMessage("SystemChange");
isnew = true;
}
//进制转化换
function parseInt2(s:String, from:Number, to:Number):String {
if (from == 10) {
return Number(s).toString(to).toUpperCase();
} else {
return parseInt(s, from).toString(to).toUpperCase();
}
}
//角度转化为弧度
function dtr(angle:Number) {
return angle*(Math.PI/180);
}
//弧度转化为角度
function rtd(angle:Number) {
return angle*(180/Math.PI);
}
//数字分组
private function group() {
output = value;
if (grouping) {
if (output.indexOf("e") == -1) {
if (systems == 10) {
var sign = ",";
var n:Number = 3;
} else {
var sign = " ";
var n:Number = 4;
}
if (output != "0") {
if (output.indexOf(".") != -1) {
var num = output.indexOf(".");
} else {
var num = output.length;
}
for (var i = num-n; i>0; i -= n) {
if (output.slice(0, i) != "-") {
output = output.slice(0, i).concat(sign, output.slice(i));
}
}
}
}
}
}
//化成科学记数法
function ChangetoE(n:Number) {
if (n>=1) {
if (String(n).length<16) {
var nz = Math.floor(n);
var nx = String(n).slice(String(nz).length+1);
nx = Rtrim(nx, "0");
var ns = String(nz).split("");
var nsp = ns[0]+".";
for (var i = 1; i<ns.length; i++) {
if (nx == 0) {
if (ns[i] == 0) {
var del = true;
for (var j = i; j<ns.length; j++) {
if (!ns[i] == 0) {
del = false;
break;
}
}
if (del) {
break;
}
} else {
nsp += ns[i];
}
} else {
nsp += ns[i];
}
}
nsp = String(nsp);
nsp = Rtrim(nsp, "0");
if (nx == "") {
if (String(nsp).substr(-1, 1) == ".") {
nsp = String(nsp).slice(0, -1);
}
} else {
nx = String(nx);
nsp += Rtrim(nx, "0");
}
return String(nsp+"e+"+(ns.length-1));
} else {
return n;
}
} else {
if (n == 0) {
return "0e+0";
} else if (n>0.00001) {
var ns = String(n).split("");
var nt = 0;
for (var i = 2; i<ns.

上一页  [1] [2] [3] [4] 下一页

  • 上一篇文章:
  • 下一篇文章:
  • 热门文章
    Olldbg常见问题
    汇编语言的艺术(组合语言的艺术)--观
    汇编语言的艺术(组合语言的艺术)--准
    汇编语言的艺术(组合语言的艺术)--基
    汇编语言的艺术(组合语言的艺术)--基
    汇编语言---程式设计 (4)
    虚拟8086模式
    SYS命令使用说明
    javascript + CSS 实现动态菜单显
    推荐文章
    自制Windows XP SP2自动安装光盘
    SQLServer注入工具改进版 v1.02
    使用photoshop CS进行自然美肤
    Photoshop绘制诺基亚手机
    PHOTOSHOP制作秋日之梦
    PHOTOSHOP鼠绘名模王爱萍
    Photoshop制作晶莹飞溅的水珠
    教你用PHOTOSHOP做放大镜
    鼠绘美女及服装修画全过程