2012-03-30 77 views
1

我有一個應用程序的小選項卡,允許用戶查找價格表中的價格並返回價格。我如何獲得退貨價格上的'$'標誌?需要使用貨幣符號返回值

public double? SearchMedicinePrice(Int64 pNDC) 
{ 
    double? retValue = null; 
    objConext = new FDBEntities(); 
    Medicine objMedicine = objConext.Medicines.Where(med => med.PriceType == 9 && med.NDC == pNDC).OrderByDescending(item=>item.MedicineID).FirstOrDefault(); 
    if (objMedicine != null) 
    { 
     retValue = objMedicine.Price; 
    } 
    return retValue; 
} 
+3

'double's不能有貨幣符號。 – SLaks 2012-03-30 20:18:09

+0

獲得價格後,將其轉換爲字符串並在美元符號前加上。 – CanSpice 2012-03-30 20:19:08

+1

貨幣符號是格式化問題,您只能格式化字符串。作爲數據它是一個數值。 – 2012-03-30 20:19:18

回答

6

當你調用ToString()在上(以及其他許多類型),您可以傳入format string來指定如何格式化結果。就像這樣:

double price = 10.5; 
price.ToString("C"); 

輸出= $10.50

您也可以使用String.Format這樣的:

string message = String.Format("The price is {0:C}", SearchMedicinePrice(pndc)); 

{0:C}是一個format stringC指定該值應該格式化爲貨幣。

您也可以傳入一個CultureInfo對象來配置貨幣符號之類的東西。例如,下面的代碼將輸出£10.50

10.5.ToString("C", new CultureInfo("en-GB")) 

您還可以考慮使用decimal代替double用於存儲貨幣數據。

2

你可以建立一個小的物體:在

public class Currency { 
    public double Amount {get;set;} 
    public string Symbol {get;set;} 
    public override string ToString() { 
     return String.Format(Symbol + "{0}",Amount); 
    } 

} 


public Currency SearchMedicinePrice(Int64 pNDC) { 
    Currency retValue = null; 
    objConext = new FDBEntities(); 
    Medicine objMedicine = objConext.Medicines.Where(med => med.PriceType == 9 && med.NDC == pNDC).OrderByDescending(item=>item.MedicineID).FirstOrDefault(); 
    if (objMedicine != null) 
    { 
     retValue.Amount = objMedicine.Price; 
     retValue.Symbol = objMedicine.CurrencySymbol; 
    } 
    return retValue; 
} 

然後使用它:

Label1.Text = SearchMedicinePrice(pNDC).ToString(); 
0

你必須使用字符串

string str="$"+SearchMedicinePrice(x).ToString();