使用带小数的指数 [重复]

Posted

技术标签:

【中文标题】使用带小数的指数 [重复]【英文标题】:Using Exponents with Decimals [duplicate] 【发布时间】:2015-03-22 04:09:19 【问题描述】:

我仍然是学习 C# 的新手,想知道是否可以得到一些帮助。我正在编写一个程序 C# 和 Windows 窗体,以便用户可以计算他们的每月付款和抵押贷款利息。我的付款等式是: 付款 = p * r / ( 1 - ( 1 + r ) ^ ( -n ) ) 其中 p 是贷款金额,r 是从 0(0%)到 1(100%)的数字给出的月利率,n 是以月为单位的贷款期限 那么支付总利息的公式为:总利息=n*还款-p

现在我尝试使用 Math.Pow 方法将所有这些数字作为双打输入,但计算结果不正确。我假设费率需要是小数,所以当我尝试将它们全部作为小数时,VS 不喜欢“^”方法或 math.pow 方法。所以我的问题是,你应该如何使用带指数的小数? 对于那些希望查看我当前代码的人,请注意,我只是想在开始添加额外的“else”语句之前完成计算。

        decimal amnt = Convert.ToDecimal(txtAMNT.Text);
        string Amount=Convert.ToString(txtAMNT.Text);
        decimal rate = Convert.ToDecimal(txtRATE.Text);
        string Rate = Convert.ToString(txtRATE.Text);
        decimal time = Convert.ToDecimal(txtTIME.Text);
        string Time=Convert.ToString(txtTIME.Text);
        decimal monthpay;
        decimal totalinterest;
        decimal realrate = rate / 100;

        if ((Amount == "")||(Rate == "")||(Time==""))
        
            MessageBox.Show("Please fill all boxes with numbers");
        
        else
        
            monthpay=amnt*realrate/(1-(1+realrate)^(-time));
                totalinterest=time*monthpay-amnt;
            mtbMonPay.Text=monthpay.ToString("c");
            mtbTotalInterest.Text=totalinterest.ToString("c");
        

【问题讨论】:

你为什么要Convert.ToStringing 已经是字符串的东西(例如txtAMNT.Text)? Decimal.TryParse 通常被认为比Convert.ToDecimal 更好。 idk 为什么,这只是我写一些行的方式,我知道它已经是一个字符串,但我猜它是我所教的。我大部分时间都是这样做的。无论如何,这不应该对代码的数学部分产生影响。 sam,这很有趣,tryparse 方法允许我将其设为字符串和小数?我喜欢那个大声笑,但是VB如何能够区分它们作为字符串和小数呢? 你的输入值是多少,你的输出值是多少,你期望的输出值是多少? 【参考方案1】:

您应该使用 double 进行此计算。

您得到错误结果的原因是您忘记将年利率除以 12 来获得月利率。

十进制不支持求幂。此外,the caret operator (^) 不适用于 C# 中的求幂;没有幂运算符。您只需调用 Math.Pow。

另见https://***.com/a/6426826/385844

【讨论】:

哇,如果你从来没有指出我很可能最终会把我的笔记本电脑扔出窗外。我正在尝试一切,完全忘记除以 12。我以为我编码错误,我是,我只是搞砸了我的数学大声笑【参考方案2】:

double 对于您正在使用的精度应该足够准确。尝试将所有小数更改为双精度数。

另一个问题是您的费率。实际利率是输入值/100,表示1,你说的100%实际上是1%。

【讨论】:

以上是关于使用带小数的指数 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

格式化带两位小数的数字var [重复]

解析带小数点的值[重复]

用逗号格式化数字PHP [重复]

我正在尝试从结果中删除指数数字[重复]

尾数和指数 - 带小数的负数(超过 0.5)

如何在javascript中检查变量类型[重复]