2009-03-03 241 views
12

我正在查詢返回貨幣值的數據庫字段,我將其分配給一個字符串,但它在結尾處添加了額外的00。將C#貨幣轉換爲字符串

例如查詢返回30.00

我給你這一個字符串(string value = Convert.ToString(ReturnValue);) 但是當我將它輸出,它顯示爲30.0000

你能告訴我,我要去哪裏錯了,並以接近這一點的最好方法是什麼?

+0

什麼是從數據庫中獲取的變量的.NET類型(在轉換爲字符串之前)? – 2009-03-03 23:38:00

+0

OP可以使用字符串格式代碼,這就是他們在那裏。 – 2009-03-03 23:46:46

回答

1

試試這個:

yourValueHere.ToString("0.00") 
3

我會使用類似

string value = ReturnValue.ToString("0.00"); 

它使用一個接受格式字符串的ToString重載。 上述格式字符串「0.00」指定了兩位小數。

6

你想要使用貨幣字符格式化你的字符串嗎?

如果是這樣......

decimal m = 3.4; 

string s = string.Format("{0:c}", m); 

// s will be £3.40, $3.40, etc depending on your locale settings 
0

在SQLServer的貨幣數據類型是精確小數點後4位小數的等價物。我會假設這是精度保存時小數轉換爲字符串。最好的選擇是在轉換時總是使用格式字符串,例如「#,## 0.00」。

0

Money數據類型的精度爲4位小數。您需要在ToString()參數中指定格式,或者您可以在轉換爲字符串之前舍入值。

如果你使用.ToString(),你不會得到任何舍入,據我所知。我認爲你只是輸了數字。

如果你四捨五入,你不只是切斷數字。這裏有一個四捨五入(未經測試的代碼)的例子:

string value = Math.Round(ReturnValue, 2).ToString(); 
12

MartGriff,

我最好的建議是使用SqlMoney類型將其轉換爲一個雙。從那裏,你可以輸出它,但你想!

下面是一個例子:

System.Data.SqlTypes.SqlMoney ReturnValue; 

//Set your returnValue with your SQL statement 
ReturnValue = ExecuteMySqlStatement(); 

//Get the format you want 

//$30.00 
string currencyFormat = ReturnValue.ToDouble().ToString("c"); 

//30.00 
string otherFormat = ReturnValue.ToDouble().ToString("0.00"); 

更多格式選項,請查看MSDN:

http://msdn.microsoft.com/en-us/library/system.double.tostring.aspx

祝你好運,我希望這有助於。

2

我目前正在開發一個使用VS 2013社區版的boatdock網絡系統。我試圖弄清楚如何將貨幣值輸出到文本框中。

,我所用的是該方法

fieldName.Text = decimalValue.ToString( 「C」);

它完美的作品。