Спасибо, ребята, за решение проблемы бесконечности, которую я получил из моего последнего вопроса:
Бесконечность начисления процентов?
В последнее время я пересылал электронные письма от клиентов с жалобами на то, что числа, которые они получают, заканчиваются неправильно, но я не понимаю, как это может быть возможно. Я сам проверил это, используя значения, которые я поместил в свое тестовое приложение ниже, но я просто не вижу проблемы - результаты получаются правильно ($ 352,24) в соответствии с другой программой интереса, которую я использую, когда я набираю значения , Я не уверен, где еще искать, может кто-нибудь помочь мне выяснить, что здесь происходит?
Вот модифицированный код, с которым я тестирую:
static float money;
static void Main()
{
//string[] myMaybeBalances = Accounts.GetStartingBalances();
string[] myMaybeBalances = new string[1];
myMaybeBalances[0] = "123.45";
myIsMaybeMoneyValidator Miimv = new myIsMaybeMoneyValidator();
ArrayList interests = Miimv.interestsAccrued(myMaybeBalances);
foreach (object interest in interests)
{
Console.WriteLine(interest);
}
Console.ReadLine();
}
public ArrayList interestsAccrued(string[] myMaybeBalances)
{
ArrayList interests = new ArrayList();
foreach (string myMaybeBalance in myMaybeBalances)
{
bool myResult = isMaybeMoney(myMaybeBalance);
if (myResult == true)
{
//decimal[] rates = Accounts.GetRates();
decimal[] rates = new decimal[1];
rates[0] = (decimal)0.0350;
for (int i = 0; i < rates.Length; i++)
{
decimal rate = rates[i];
float total = money;
int n_X_t = 360;
while (n_X_t != 0)
{
rate = (1 + rates[i] / 12);
float myRate;
float.TryParse(rate.ToString(), out myRate);
total = total * myRate;
n_X_t = n_X_t - 1;
}
interests.Add(total);
}
}
}
return interests;
}
public bool isMaybeMoney(object theirMaybeMoney)
{
string myMaybeMoney = theirMaybeMoney.ToString();
float num;
bool isValid = float.TryParse(myMaybeMoney,
NumberStyles.Currency,
CultureInfo.GetCultureInfo("en-US"), // cached
out num);
money = num;
return isValid;
}
EDIT:
Я пытался изменить его на
rate = (1 + rates[i] / 12.0);
и я получаю эту ошибку, когда нажимаю зеленую кнопку воспроизведения:
Ошибка 1 Оператор «/» не может быть применен к операндам типа «десятичный» и «двойной» C: \ Users \ dave \ Documents \ Visual Studio 2010 \ Projects \ ConsoleApplication2 \ ConsoleApplication2 \ Program.cs 74 41 ConsoleAp plication2