JavaScript个人所得税计算(附代码)

JavaScript个人所得税计算(附代码),第1张

请输入数据:<input id="zgz" name="zgz" onfocus="s()" value="4000"/>

<script type="text/javascript">

<!--

function s()

{

var shuishou=0

var v=document.getElementById('zgz').value

var z=parseInt(v)? v : 0

var chaoguo=z-2000

if (chaoguo >100000)

shuishou += (chaoguo - 100000) * 0.45 + 20000 * 0.4 + 20000 * 0.35 + 20000 * 0.3 + 20000 * 0.25 + 15000 * 0.2 + 3000 * 0.15 + 1500 * 0.1 + 500 * 0.05

else if (chaoguo >80000 &&chaoguo <= 100000)

shuishou += (chaoguo - 80000) * 0.4 + 20000 * 0.35 + 20000 * 0.3 + 20000 * 0.25 + 15000 * 0.2 + 3000 * 0.15 + 1500 * 0.1 + 500 * 0.05

else if (chaoguo >60000 &&chaoguo <= 80000)

shuishou += (chaoguo - 60000) * 0.35 + 20000 * 0.3 + 20000 * 0.25 + 15000 * 0.2 + 3000 * 0.15 + 1500 * 0.1 + 500 * 0.05

else if (chaoguo >40000 &&chaoguo <= 60000)

shuishou += (chaoguo - 40000) * 0.3 + 20000 * 0.25 + 15000 * 0.2 + 3000 * 0.15 + 1500 * 0.1 + 500 * 0.05

else if (chaoguo >20000 &&chaoguo <= 40000)

shuishou += (chaoguo - 20000) * 0.25 + 15000 * 0.2 + 3000 * 0.15 + 1500 * 0.1 + 500 * 0.05

else if (chaoguo >5000 &&chaoguo <= 20000)

shuishou += (chaoguo - 5000) * 0.2 + 3000 * 0.15 + 1500 * 0.1 + 500 * 0.05

else if (chaoguo >2000 &&chaoguo <= 5000)

shuishou += (chaoguo - 2000) * 0.15 + 1500 * 0.1 + 500 * 0.05

else if (chaoguo >500 &&chaoguo <= 2000 )

shuishou += (chaoguo - 500) * 0.1 + 500 * 0.05

else if (chaoguo >0 &&chaoguo <= 500 )

shuishou = chaoguo * 0.05

document.getElementById('zgz').value=shuishou

}

-->

</script>

已经给楼主写好了。。。

祝楼主早日成功哈!!!

构建一个数学表达式的字符串,然后用 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://baike.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)。 1 3

LN2 返回 2 的自然对数(约等于0.693)。 1 3

LN10 返回 10 的自然对数(约等于2.302)。 1 3

LOG2E 返回以 2 为底的 e 的对数(约等于 1.414)。 1 3

LOG10E 返回以 10 为底的 e 的对数(约等于0.434)。 1 3

PI 返回圆周率(约等于3.14159)。 1 3

SQRT1_2 返回返回 2 的平方根的倒数(约等于 0.707)。 1 3

SQRT2 返回 2 的平方根(约等于 1.414)。 1 3

Math 对象方法

FF: Firefox, IE: Internet Explorer

方法 描述 FF IE

abs(x) 返回数的绝对值。 1 3

acos(x) 返回数的反余弦值。 1 3

asin(x) 返回数的反正弦值。 1 3

atan(x) 以介于 -PI/2 与 PI/2 弧度之间的数值来返回 x 的反正切值。 1 3

atan2(y,x) 返回从 x 轴到点 (x,y) 的角度(介于 -PI/2 与 PI/2 弧度之间)。 1 3

ceil(x) 对数进行上舍入。 1 3

cos(x) 返回数的余弦。 1 3

exp(x) 返回 e 的指数。 1 3

floor(x) 对数进行下舍入。 1 3

log(x) 返回数的自然对数(底为e)。 1 3

max(x,y) 返回 x 和 y 中的最高值。 1 3

min(x,y) 返回 x 和 y 中的最低值。 1 3

pow(x,y) 返回 x 的 y 次幂。 1 3

random() 返回 0 ~ 1 之间的随机数。 1 3

round(x) 把数四舍五入为最接近的整数。 1 3

sin(x) 返回数的正弦。 1 3

sqrt(x) 返回数的平方根。 1 3

tan(x) 返回角的正切。 1 3

toSource() 返回该对象的源代码。 1 -

valueOf() 返回 Math 对象的原始值。 1 4


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12173659.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存