当前位置:  开发笔记 > 编程语言 > 正文

数学公式在C#中没有给出与excel或计算器相同的答案

如何解决《数学公式在C#中没有给出与excel或计算器相同的答案》经验,为你挑选了1个好方法。

我一直在尝试使用一个公式来计算我们团队正在创建的程序中的独家增值税.当在计算器或excel中使用时,该公式可正常工作,但在我们的程序中的函数中使用时会提供不同的输出!

这是功能:

function fn_calcVat() 
{
    var vRate = Ext.getCmp('crd_vat_rate').getValue();
    var vTranAmt = Ext.getCmp('crd_tran_amt').getValue();

    if (vRate != '' && vTranAmt != '') 
    {
        alert(Ext.getCmp('vatable').getValue().toString());
        var vAmt = 0;
        if (Ext.getCmp('vatable').getValue().toString() == 'Y')
        {
            vAmt = (vRate / ((vTranAmt / 100) + 1));
            Ext.getCmp('crd_vat_amt').setValue(vAmt.toFixed(2));
            Ext.getCmp('crd_tran_tot').setValue(vTranAmt.toString());
            vAmt = 0;
        }
        else 
        {
            vAmt = ((vRate / 100) * vTranAmt);
            Ext.getCmp('crd_vat_amt').setValue(vAmt.toFixed(2));
            Ext.getCmp('crd_tran_tot').setValue((vTranAmt + vAmt));
            vAmt = 0;
        }                
    }
}

问题的公式是 vAmt = (vRate / ((vTranAmt / 100) + 1));

另一个公式是完美的.

一个示例输入将是100,增值税率为14.00,预期答案将是14的税额,但它给它7!

我们正在使用EXTJS,js和C#的混搭......

任何帮助将不胜感激.

亲切的问候

缺口



1> user7116..:

您可能会使用以下代码成为整数除法的牺牲品:

vAmt = (vRate / ((vTranAmt / 100) + 1));

您应该将公式更改为以下内容以避免混淆:

vAmt = (vRate / ((vTranAmt / 100.0) + 1.0));

但是,使用您提供的数字,为vTranAmt插入100和为vRate插入14将不会有整数除法的问题,但会给你7:

vAmt = (14 / ((100 / 100) + 1))
     = (14 / ((1        ) + 1))
     = (14 / (2              ))
     = (7                     )

所以要么你的公式不正确,要么7是正确的答案.

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有