我有以下行:爲什麼這個字符串格式不是貨幣?
//Send Email
clntMailBody = clntMailBody + "Order Total: " + String.Format("{0:C}", strOrderTotal + "\n");
觀察表明:
String.Format("{0:C}", strOrderTotal + "\n") "35\n" string
但它只輸出 「35」。我預計「35.00美元」爲什麼這不按預期工作?
感謝
我有以下行:爲什麼這個字符串格式不是貨幣?
//Send Email
clntMailBody = clntMailBody + "Order Total: " + String.Format("{0:C}", strOrderTotal + "\n");
觀察表明:
String.Format("{0:C}", strOrderTotal + "\n") "35\n" string
但它只輸出 「35」。我預計「35.00美元」爲什麼這不按預期工作?
感謝
我猜strOrderTotal是一個字符串?我認爲{0:C}
只適用於小數或整數類型。
您還沒有表現出的strOrderTotal
的聲明,但是通過它的名字,我假設它已經是一個string
。由於它已經是一個字符串,格式不起作用。
如果您希望格式化起作用,您需要將訂單總數作爲數字傳遞 - 最好是decimal
。
因爲它是一個字符串。
嘗試格式化字符串返回...字符串。
您需要一個數值才能將其格式化爲貨幣。
您將看到C
格式說明符在MSDN的Standard Numeric Format String頁面中定義。數字,而不是「字符串」。
我認爲strOrderTotal是字符串?它必須是小數或雙等
我打算假設strOrderTotal
是一個字符串。您應該使用數字類型,如double或Decimal。
它看起來像(根據變量名稱strOrderTotal
)您的總數已經是一個字符串。 「C」格式說明符將數字轉換爲貨幣格式,而不是已經是字符串的東西。
因此,你需要手動格式化字符串作爲貨幣或套用貨幣格式時,訂單總額最初轉換爲字符串(當它存儲在strOrderTotal
)。
如果strOrderTotal是您可以使用此代碼來格式化貨幣
clntMailBody = clntMailBody + "Order Total: " + String.Format("{0:C}", decimal.Parse(strOrderTotal) + "\n");
不可以。您不能通過轉換將字符串轉換爲小數。 – 2012-04-25 21:47:22
'decimal.Parse(string)'會起作用,但將一個小數轉換爲字符串不會。 – SouthShoreAK 2012-04-25 22:00:22
我不能相信所有這些答案的字符串,沒有人提到這一點,更改您的代碼
clntMailBody = clntMailBody + "Order Total: " + String.Format("{0:C}", strOrderTotal) + "\n";
,看看是否能解決您的問題,但是一個更好的方式做這將是
clntMailBody = String.Format("{0}Order Total: {1:C}\n", clntMailBody, strOrderTotal);
這是很更容易看到發生了什麼,並刪除了很多字符串連接。
如果你願意做一些重新寫一個更好的解決方案是:(我做了一些邏輯,以示我的例子)
StringBuilder clntMailBody = new StringBuilder();
clntMailBody.AppendLine("Some Fixed body Text")
foreach(string lineItem in Invoice)
{
clntMailBody.AppendLine(lineItem);
}
clntMailBody.AppendFormat("Order Total {0:C}", strOrderTotal).AppendLine();
return clntMailBody.ToString();
要顯示貨幣格式的字符串:
StringBuilder sb= new StringBuilder("Your total amount is ");
sb.AppendFormat("{0:C} ", 25);
Console.WriteLine(sb);
輸出:
您的總金額爲$ 25.00
因爲你正在格式化一個字符串。即使'strOrderTotal'是'decimal',你的'+「\ n」'強制它成爲'string'。 – dasblinkenlight 2012-04-25 21:03:55
是的,你們都是對的。非常感謝! – Kolten 2012-04-25 21:12:51