我有以下一行:
//Send Email
clntMailBody = clntMailBody + "Order Total: " + String.Format("{0:C}", strOrderTotal + "\n");
观看节目:
String.Format("{0:C}", strOrderTotal + "\n") "35\n" string
但它只输出“35”。我预计“35.00美元”为什么这不按预期工作?
由于
答案 0 :(得分:9)
我猜strOrderTotal是一个字符串?我认为{0:C}
仅适用于decimal或int类型。
答案 1 :(得分:5)
我无法相信所有这些答案,没有人提到这一点,将您的代码更改为
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();
答案 2 :(得分:2)
你没有展示strOrderTotal
的声明,但是它的名字我假设它已经是string
。因为它已经是一个字符串,格式化将不起作用。
如果您希望格式化工作,则需要将订单总数作为数字传递 - 最好是decimal
。
答案 3 :(得分:2)
因为它是一个字符串。
尝试格式化字符串会返回...字符串。
您需要一个数值才能将其格式化为货币。
您将看到C
格式说明符在MSDN上的Standard Numeric Format String页面中定义。数字,而不是“字符串”。
答案 4 :(得分:2)
我认为strOrderTotal是字符串?它必须是十进制或双等
答案 5 :(得分:2)
我将假设strOrderTotal
是一个字符串。您应该使用数字类型,如double或Decimal。
答案 6 :(得分:2)
看起来(基于变量名strOrderTotal
)你的总数已经是一个字符串。 “C”格式说明符将数字转换为货币格式,而不是已经是字符串的格式。
因此,您需要手动将字符串格式化为货币,或者在订单总数最初转换为字符串时应用货币格式(当它存储在strOrderTotal
中时)。
答案 7 :(得分:1)
如果strOrderTotal是一个字符串,您可以使用此代码将其格式化为货币
clntMailBody = clntMailBody + "Order Total: " + String.Format("{0:C}", decimal.Parse(strOrderTotal) + "\n");
答案 8 :(得分:0)
以货币格式显示字符串:
StringBuilder sb= new StringBuilder("Your total amount is ");
sb.AppendFormat("{0:C} ", 25 );
Console.WriteLine(sb);
输出:
您的总金额为$ 25.00