-2

POS (販売時点管理) を作成していますが、価格 " 0.60" を整数に変換しようとしたときに問題が発生しました。

データの背景: データ ソースのすべてのデータは、セットアップして問題なく接続した MySQL データベースからのものです。

Price は TextBox に格納され、" 0.60" のようにフォーマットされています。これが変換されていない理由だと思います。以下のメッセージを受け取り続けます。

追加情報: 入力文字列の形式が正しくありませんでした。

        //Puts the Price Into a String.
        string NewPrice = txtPrice.Text;

        //Converts The Quantity In the TextBox field to a numbers.
        Quantity = Convert.ToInt32(txtQuant.Text);

        //Incorrect Format & Attempt One.
        //Price = Convert.ToInt32(NewPrice); <--- Problem.
        //Price = int.Parse(NewPrice);

        // I've also tried this method below with two '0' inside the { } brackets.
        // But Still No Luck.
        Price = Convert.ToInt32(string.Format("{0.00}",txtPrice.Text)); // <--- Problem.

        // Times Price & Quantity to get Total Price (0.60 * 2 = 1.20)
        TotalSingleItemPrice = Price * Quantity;

        // The Single Item Price is added into the overall total.
        TotalPrice += TotalSingleItemPrice;

        // Converts Total Item Price to String from Int.
        string TotalPriceStr = Convert.ToString(TotalSingleItemPrice);           

        // Puts TextBoxes / Strings Into One String array (I think).
        string[] InizialItemList = new string[] { cmboInitItem.Text, Convert.ToString(Price), Convert.ToString(Quantity), TotalPriceStr};

        // Adds The String Array Into the Data Grid View.
        DGVIIL.Rows.Add(InizialItemList);

この問題に対処するためにセットアップを使用しようとしましたが、string.Format("{0.00}",txtPrice.Text)見落としていたものがわかりません。可能であれば、Price を DataGridView - DGVIIL に表示したいと思います0.60

4

4 に答える 4

1

decimal.Parseまたはを使用する必要がありConvert.ToDecimalます。文字列は明らかにint. 通貨を扱っているので、10 進数をお勧めします。

Price = Convert.ToDecimal(NewPrice);
Price = decimal.Parse(NewPrice);

TryParseまた、検証に使用することを検討することをお勧めします。

decimal price;
if (decimal.TryParse(NewPrice, out price))
{ // do stuff }
于 2014-05-09T19:05:27.400 に答える
1

double に変換してから int に変換する必要があります。

int x = Convert.ToInt32( Convert.ToDouble("1.11")); 

//Expected output: x = 1
于 2014-05-26T07:37:55.137 に答える
0
Price = Convert.ToInt32(string.Format("{0.00}",txtPrice.Text));

上記のコードでは、10 進形式から整数に変換しています。int32 型には整数のみを含めることができるため、convert メソッドでエラーが発生します。代わりに、double 型を使用して値を適切に保持できます。

double Price;
Price = Convert.ToDouble(string.Format("{0.00}",txtPrice.Text));
于 2014-05-09T19:07:01.240 に答える