Member 13066229 Ответов: 2

Проблема при попытке преобразовать тип 'double' в 'int'


private Product CreateProduct()
    {
        Product product = new Product();

        product.Name = txtName.Text;
        product.Price = Convert.ToDouble(txtPrice.Text);
        product.TypeID = Convert.ToInt32(ddlType.SelectedValue);
        product.Description = txtDescription.Text;
        product.Image = ddlImage.SelectedValue;

        return product;
    }


Что я уже пробовал:

Я пытался обратить.ToInt32(txtPrice.Text);, но это тоже не работает

[no name]

Это потому, что вы должны использовать Double.Вместо этого попробуй спарситься.

2 Ответов

Рейтинг:
4

Bryian Tan

Хммм. Я подумал, что, поскольку имя текстового поля-txtPrice, мне было интересно, содержит ли оно строку с форматом валюты типа (£12.30). Если это так, попробуйте следовать приведенному ниже примеру

System.Globalization.CultureInfo provider = new System.Globalization.CultureInfo("en-GB");
    string txtPrice = "£12.30";
    double price;
    double.TryParse(txtPrice, System.Globalization.NumberStyles.AllowThousands |
      System.Globalization.NumberStyles.AllowDecimalPoint |
      System.Globalization.NumberStyles.AllowCurrencySymbol, provider, out price);
    product.Price = price;

Выход: 12.3
если цена является целым числом
product.Price = (int)price;

Выход: 12


Рейтинг:
0

OriginalGriff

Попробуй:

double price;
if (!double.TryParse(txtPrice.Text, out price))
   {
   // Report input problem to user.
   ...
   return;
   }
product.Price = price;
Если цена является целым числом - а это, вероятно, не должно быть - тогда попробуйте:
double price;
if (!double.TryParse(txtPrice.Text, out price))
   {
   // Report input problem to user.
   ...
   return;
   }
product.Price = (int) price;
Никогда не используйте Convert.To ... для обработки пользовательского ввода: он всегда создает исключение для плохих значений, и пользователи все время совершают ошибки. Если бы вы заполнили форму с целой кучей данных, а затем приложение рухнуло, потому что вы набрали", " вместо "." Вы были бы очень раздражены - так что позвольте пользователям делать ошибки и заставьте их их исправить!