为什么我的数学不对

时间:2017-12-12 04:23:10

标签: c# math webrequest

我正在尝试制作一个简单的工具,您可以使用BTC跟踪您的投资。我有所有数据需要计算一切,但是当交换价格变化时,我的“投资总额”不会改变。当BTC上升时的含义,我赚了多少钱的结果几乎保持不变,并且当它下降时保持不变。

我发布了我的代码并尝试了一些不同的解决方案,包括不同的类型:浮点数,小数,int,双打,它​​总是以同样的方式。我错过了什么?

enter image description here

编辑 - 代码:

namespace BTC_Profit_Projections
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

        }
        Core c = new Core();

        private void button1_Click(object sender, EventArgs e)
        {
            timer1.Enabled = true;
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            var ExchangeRate = c.GrabBTCAmount();
            var AmountInBTC = (c.USDtoBTC(15000, ExchangeRate));
            var AmountAtMarket = (AmountInBTC * ExchangeRate);

            ListViewItem i = new ListViewItem("15000");
            i.SubItems.Add(AmountInBTC.ToString());
            i.SubItems.Add(AmountAtMarket.ToString());
            i.SubItems.Add(ExchangeRate.ToString());
            mainlist.Items.Add(i);
        }
    }
}

核心课程:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;

namespace BTC_Profit_Projections
{
    class Core
    {

        public decimal GrabBTCAmount()
        {
            WebClient w = new WebClient();
            string btc = w.DownloadString("https://www.bitstamp.net/api/ticker/");

            int pos1 = btc.IndexOf("last", 0);
            int pos2 = btc.IndexOf(":", pos1);
            int pos3 = btc.IndexOf(",", pos2);

            return Convert.ToDecimal(btc.Substring(pos2 + 3, pos3 - pos2 - 4));

        }

        public decimal USDtoBTC(decimal money, decimal rate) 
        {
            return money / rate;
        }
    }
}

1 个答案:

答案 0 :(得分:2)

目前尚不清楚为什么您希望此代码的行为方式不同。看看这些行:

        var ExchangeRate = c.GrabBTCAmount();
        var AmountInBTC = (c.USDtoBTC(15000, ExchangeRate));
        var AmountAtMarket = (AmountInBTC * ExchangeRate);

如果我内联USDtoBTC并内联所有内容以计算AmountAtMarket,公式将为

AmountAtMarket  = (15000 / ExchangeRate) * ExchangeRate

所以你应该总是得到15000一些舍入错误。

该错误似乎在您计算AmountInBTC的行中。要计算AmountInBTC,您应该将投资金额(我假设为15000)除以您投资时的汇率 而非当前汇率。