Рейтинг:
9
OriginalGriff
Это невозможно.
Что вы получаете, когда умножаете "хлеб-это здорово" на "в бутерброде"?
Ничего - это глупая вещь, чтобы попытаться сделать.
Но фреймворк не знает, что пользователь собирается ввести - это может быть число, а может и нет. Таким образом, ваша вторая попытка лучше, но также ошибочна, потому что пользователи совершают ошибки.
Попробовать это:
double price;
if (!double.TryParse(BTCPrice_Label.Text, out price))
{
... report problem to user ...
return;
}
double btcA;
if (!double.TryParse(BTCPrice_Label.Text, out btcA))
{
... report problem to user ...
return;
}
label1.Text = (price * btcA).Tostring();
Таким образом, ваше приложение не будет аварийно завершать работу, когда возникает проблема!
Member 11819205
спасибо, что объяснили. я использовал этот код и теперь могу отлаживать свою программу, но она не показывает результатов!!
именно это я и сделал с кодом. я поставил // потому что у меня есть ошибки, и я не знаю, что мне с этим делать. ( я знаю, что это, вероятно, очень легко, но я все еще изучаю много основных вещей )
двойной АА;
если (!двойной.Метод tryparse(BTC_A.Текст, вне АА))
{
// ... сообщите о проблеме пользователю ...
вернуть;
}
двойной американский;
если (!двойной.Метод Tryparse(BTCPrice_Label.Текст, из американский))
{
// ... сообщите о проблеме пользователю ...
вернуть;
}
этикетка 1.Текст = (АА * американский).Метод toString();
OriginalGriff
Идея заключается в том, что вы заменяете закомментированную строку кодом, сообщающим о проблеме: Console.Возможно, WriteLine или Messagebox.Покажите, может быть, даже предупреждение о том, что вы кодируете веб - сайт - мы понятия не имеем, в какой среде вы работаете, поэтому я не могу быть конкретным о том, что там разместить-вот почему это было просто "... сообщите о проблеме пользователю...", чтобы вы поняли, что вам нужно что-то там сделать. Если вы просто прокомментируете его, он ничего не сделает!
Поставьте точку останова на двух операторах return и позвольте отладчику остановиться, когда он попадет в них - тогда вы сможете увидеть, что он обрабатывал.
Member 11819205
о, теперь я это понимаю. Огромное спасибо!.
Итак, я сделал то, что вы сказали, а также поставил две точки останова, но я не получаю никаких ошибок! он просто не умножает числа! и он продолжает показывать мне окна сообщений.
мое приложение находится в winforms ( https://imgur.com/U5nxs1J ).
этикетка 1.Текст-это метка результата, BTC_A.Текст-это метка "0.01741294" и BTCPrice_Label.Текст-это метка, которая меняется каждые 5 секунд и показывает цену btc
вот как это выглядит сейчас:
двойной АА;
если (!двойной.Метод tryparse(BTC_A.Текст, вне АА))
{
Ящик для сообщений.Показать("есть проблема");
вернуть;
}
двойной американский;
если (!двойной.Метод Tryparse(BTCPrice_Label.Текст, из американский))
{
Ящик для сообщений.Показать("есть проблема");
вернуть;
}
этикетка 1.Текст = (АА * американский).Метод toString();
OriginalGriff
Поэтому посмотрите, что именно содержится в значениях, прежде чем конвертировать их.
В какую точку останова он попал?
Какое значение было в строке?
Вы используете отладчик, да?
Также измените свое сообщение:
Ящик для сообщений.Show($"невозможно преобразовать BTC_A \"{BTC_A.Text}\" в число с плавающей запятой");
И
Ящик для сообщений.Show($"невозможно преобразовать цену \"{BTCPrice_Label.Текст}\" к числу с плавающей запятой");
Любая ошибка, которая просто говорит "это не работает", не имеет большого смысла без груды контекста!
Member 11819205
Огромное спасибо!. я обнаружил, что проблема была в знаке доллара, который я поставил перед номером, я просто удалил знак, и он показал результаты. Огромное спасибо!
OriginalGriff
Всегда пожалуйста!