http://www.csdn.net/expert/topic/808/808918.xml?temp=.735058可以再讨论,但是你要说问题在哪里啊

解决方案 »

  1.   

    <script language="Javascript"><!--
    function money(pay1){               //代入的变量 pay1 为数字型
      if ((pay1 > 800)&&(pay1 < 1000))return(pay1 * 0.11);
      if ((pay1 > 1000)&&(pay1 < 1500))return(pay1 * 0.12);
      }
    // --></script>
      

  2.   

    好像个人所得税要分好多段的吧?不只这么简单吧?具体怎么分就不清楚了。为什么不用switch语句?
      

  3.   

    问题在于不是变量的代入,而是在于公式的拆分,由于这个计算公式是用户
    自己输入的,我并不知道他会输入怎样的计算公式,上面那个只是我假设用户的输入格式是那样的,用户也可能会输入
    if(800<pay1<1200)pay9=pay1*0.10;if(1000<pay1<1200)pay9=pay1*0.11;if(1200<pay1<1500)pay9=pay1*0.12;或者是别的更多分类,
    甚至也不一定是pay1表示基本工资,基本工资的代码也有可能是pay2或pay3等
    所以问题应该在于你怎样去判断用户输入的内容,然后再计算,我觉得这个很难实现,但是我参考的那套系统可以实现,如果公式是死的,那当然是容易了
      

  4.   

    那岂非很惨,难道要做一个解释器嘛??用户虽然是上帝,可不能总是迁就,你把公式的格式定死了不成吗?
    要不你分解表达式,让用户从select中选择,然后你合成表达式。
    其实当中用倒的元素并不多,
    数字,if , ( , ) , * , = ,变元 , < , > ,然后以;结束。应该好控制。
    用户的输入是不可靠和难处理的,尽量减少吧。
      

  5.   

    问题的症结在四则计算公式的解析,如果是这样的话。我以前用java和javascript实现过,可以用清华数据结构教材中的例子,或用降序递归算法来做,懂的原理的话大概要1~2个小时时间来做。
      

  6.   

    我昨天就说了不要解析式子,直接拿式子来算就行了。你怎么老是不肯说我的方法到底有什么不好呢?再给你一个例子。看看怎么样。<html>
    <head>
    <body>
    请输入公式:<BR>
    <input size=40 id="pay" value="(pay1+pay2)*pay3/(pay4-pay5)"><BR>
    请输入计算项的值:<BR>
    pay1:<input id=pay value=1><BR>
    pay2:<input id=pay value=2><BR>
    pay3:<input id=pay value=3><BR>
    pay4:<input id=pay value=4><BR>
    pay5:<input id=pay value=5><BR>
    <BR>
    <button onclick="cal()">开始计算</button>
    结果:<input id="result">
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    function cal()
    {
    str = pay[0].value
    for (var i=1;i<pay.length;i++)
    str = str.replace( ("pay"+i) , pay[i].value )
    result.value = eval(str)
    }
    //-->
    </SCRIPT>
    </body>
    </html>你老这样不答理我,我以后也不答理你了。
      

  7.   

    我昨天就说了不要解析式子,直接拿式子来算就行了。你怎么老是不肯说我的方法到底有什么不好呢?再给你一个例子。看看怎么样。<html>
    <head>
    <body>
    请输入公式:<BR>
    <input size=40 id="pay" value="(pay1+pay2)*pay3/(pay4-pay5)"><BR>
    请输入计算项的值:<BR>
    pay1:<input id=pay value=1><BR>
    pay2:<input id=pay value=2><BR>
    pay3:<input id=pay value=3><BR>
    pay4:<input id=pay value=4><BR>
    pay5:<input id=pay value=5><BR>
    <BR>
    <button onclick="cal()">开始计算</button>
    结果:<input id="result">
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    function cal()
    {
    str = pay[0].value
    for (var i=1;i<pay.length;i++)
    str = str.replace( ("pay"+i) , pay[i].value )
    result.value = eval(str)
    }
    //-->
    </SCRIPT>
    </body>
    </html>你老这样不答理我,我以后也不答理你了。
      

  8.   

    emu,你的方法是很好用的,我现在的问题是我的计算公式由用户输入,
    我总不能让用户输入javascript 语言吧,你的方法我在其他工资项目中使用了,所以才给你100分了,
      

  9.   

    有这个问题你早说嘛。那你想让用户以什么格式输入计算公式呢?if...then...else...?下面这样的格式能接受吗?<html>
    <head>
    <body>
    请输入公式:<BR>
    <input size=100 id="pay" value="(pay1<pay2)?(pay1):((pay1<pay4)?(pay1-(pay1-pay2)*pay3):(pay1-(pay4-pay2)*pay3-(pay1-pay4)*pay5))"><BR>
    请输入计算项的值:<BR>
    应发工资:<input id=pay value=2000><BR>
    扣税起点:<input id=pay value=800><BR>
    基本税率:<input id=pay value=.01><BR>
    分界点:<input id=pay value=1300><BR>
    高税率:<input id=pay value=.02><BR>
    <BR>
    <button onclick="cal()">开始计算</button>
    结果:<input id="result">
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    function cal()
    {
    str = pay[0].value
    for (var i=1;i<pay.length;i++)
    while (str.indexOf("pay"+i)>-1)
    str = str.replace( ("pay"+i) , pay[i].value )
    result.value = eval(str)
    }
    //-->
    </SCRIPT>
    </body>
    </html>