我正在尝试制作一个简单的工具,您可以使用BTC跟踪您的投资。我有所有数据需要计算一切,但是当交换价格变化时,我的“投资总额”不会改变。当BTC上升时的含义,我赚了多少钱的结果几乎保持不变,并且当它下降时保持不变。
我发布了我的代码并尝试了一些不同的解决方案,包括不同的类型:浮点数,小数,int,双打,它总是以同样的方式。我错过了什么?
编辑 - 代码:
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;
}
}
}
答案 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
)除以您投资时的汇率 而非当前汇率。