2016-12-28 3 views
-1

Итак, все еще есть некоторые логические ошибки в этом, над которыми я работаю. Я не беспокоюсь о тех, кого хочу сам выяснить. Я работаю над приложением для игрового автомата для какого-то независимого исследования, и когда я пытаюсь разобрать значение метки, которая показывает, как игроки получают денежные средства в переменной, я получаю исключение в формате. Может кто-нибудь объяснить мне, как это исправить, и что еще более важно, почему я получаю это исключение. Я также попытался использовать tryparse и convert.todouble. Спасибо за помощь. Извините, если это глупый вопрос. Я все еще учусь.Получение исключения формата, разбор строки с двойным

protected void PullBTN_Click(object sender, EventArgs e) 
{ 

    //get players cash//////////////////////////////   
    double playersCash = Convert.ToDouble(playerMoneyLBL.Text); 

    //other way i tride that didn't work//////////// 
    //double playersCash = 0; 
    // double.TryParse(playerMoneyLBL.Text.Trim(),out playersCash); 

    // get players bet ///////////////////////////// 
    double playerBet = 0; 
    if (!double.TryParse(betTB.Text, out playerBet)) 
     return; 

    // spin the slots////////////////////////////// 
    Image1.ImageUrl = spinReel(); 
    Image2.ImageUrl = spinReel(); 
    Image3.ImageUrl = spinReel(); 

    //find multiplier////////////////////////////// 
    double multiplier = findMultiplier(); 

    //find winnings/////////////////////////////// 
    double winnnings = multiplier * playerBet; 
    playerMoneyLBL.Text = (playersCash + winnnings).ToString(); 
    //add winnings to players money////////////// 
    playerMoneyLBL.Text = (playersCash + winnnings).ToString(); 
} 
+2

, какая линия дает ошибку. Не просто отправьте полный код –

+0

тот, что находится прямо под получателем денег. Комментарий – Roger

+0

Уход за удалением нерелевантного кода, скорее всего, эта строка 'double playersCash = Convert.ToDouble (playerMoneyLBL.Text);' заставляя использовать ошибку 'TryParse' вместо 'Convert.To ...' –

ответ

2

Ваша проблема здесь.

playerMoneyLBL.Text = "$100"; 

Как вы уже $ в авансовые 100, вы не можете преобразовать его плавать. Сделайте что-то вроде этого.

double playersCash = Convert.ToDouble(playerMoneyLBL.Text.substring(1)); 
1

double.Parse по умолчанию использует текущие настройки CurrentCulture в текущей среде.

double d = double.Parse("Your Text Here", CultureInfo.InvariantCulture); 

или если Вы хотите более безопасный способ попробовать

value = "Your String"; 
style = NumberStyles.Number | NumberStyles.AllowCurrencySymbol| NumberStyles.AllowThousands; 
culture = CultureInfo.InvariantCulture 
if(Double.TryParse(value, style, culture, out number)) 
{ 
    //write your code for true condition 
} 
else 
{ 
    //write your code for false condition 
} 
Смежные вопросы