尝试将类型'double'转换为'int'时出现问题 [英] Problem trying to convert type 'double' to 'int'

查看:144
本文介绍了尝试将类型'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;

退货产品;
}





我的尝试:



我试过Convert.ToInt32(txtPrice.Text);,但是这不起作用

解决方案

试试:

  double 价格; 
if (!double.TryParse(txtPrice.Text, out price))
{
// 向用户报告输入问题。
...
return ;
}
product.Price = price;

如果Price是一个整数 - 它可能不应该是 - 那么试试:

  double 价格; 
if (!double.TryParse(txtPrice.Text, out price))
{
// 向用户报告输入问题。
...
return ;
}
product.Price =( int )价格;

永远不要使用Convert.To ...来处理用户输入:它总是在坏值上抛出异常,用户总是会犯错误。如果您填写了包含大量数据的表单,那么应用程序会因为您键入,而不是。而崩溃。你会非常恼火 - 所以让用户犯错并让他们纠正错误!


嗯。我一直在想,因为文本框名称是txtPrice,我想知道该框是否持有货币格式的字符串(£12.30)。如果是这种情况,请尝试按照以下示例



 System.Globalization.CultureInfo provider =  new  System.Globalization.CultureInfo(  en-GB); 
string txtPrice = £12.30< /跨度>;
double 价格;
double .TryParse(txtPrice,System.Globalization.NumberStyles.AllowThousands |
System.Globalization.NumberStyles.AllowDecimalPoint |
System。 Globalization.NumberStyles.AllowCurrencySymbol,provider, out price);
product.Price = price;



输出:12.3

如果价格是整数

< pre lang =c#> product.Price =( int )价格;



输出:12


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;
    }



What I have tried:

I've tried Convert.ToInt32(txtPrice.Text);, but that doesnt work either

解决方案

Try:

double price;
if (!double.TryParse(txtPrice.Text, out price))
   {
   // Report input problem to user.
   ...
   return;
   }
product.Price = price;

If Price is an integer - and it probably shouldn't be - then try:

double price;
if (!double.TryParse(txtPrice.Text, out price))
   {
   // Report input problem to user.
   ...
   return;
   }
product.Price = (int) price;

Never use Convert.To... to handle user input: it always throws an exception on bad values, and users make mistakes all the time. If you had filled out a form with a whole bunch of data, and the app then crashed because you types "," instead of "." you'd be pretty annoyed - so allow users to make mistakes and get them to correct them!


Hmmmmm. I been thinking, since the Textbox name is txtPrice, I was wondering if the box is holding string with currency format like (£12.30). If that the case, try follow the below example

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;


Output: 12.3
if price is an integer

product.Price = (int)price;


Output: 12


这篇关于尝试将类型'double'转换为'int'时出现问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆