【发布时间】:2014-02-23 05:28:57
【问题描述】:
我从 csv 文件中获取数据并将其解析到我的应用程序。在我的 csv 文件中,我有一个列 price,我当然将其值用作我项目中某个项目的价格。
但是,csv 文件中的价格不包含尾随 0,
例如,如果商品的价格为$5.00,则csv 文件中的名称为$5,如果价格为$9.60,则csv 文件中的名称为$9.6。不过$9.56 等其他价格也不错。
这是我从 csv 文件中检索价格的方式:
Price = string.IsNullOrEmpty(columns[3].Trim()) ?
null : (decimal?)decimal.Parse(columns[3]),
在我的班级中,Price 设置为 public decimal? Price { get; set; }。
如何格式化返回的内容以解决此问题?
Price = String.Format("Price: {0:C}",
string.IsNullOrEmpty(columns[3].Trim()) ?
null : (decimal?)decimal.Parse(columns[3]));
我尝试了上述方法,但没有成功。
如何修复它,以便将 csv 中的值作为 $5.9 格式化为 $5.90。
编辑:
试过了:
Price=decimal.Round(string.IsNullOrEmpty(columns[3].Trim()) ?
null :
(decimal?)decimal.Parse(columns[3]), 2, MidpointRounding.AwayFromZero);
不确定我这样做是否正确?
另外,我不确定如何在我的代码中使用以下选项:
decimalVar.ToString ("#.##");
也试过了:
Price = string.IsNullOrEmpty(columns[3].Trim()) ?
null : (decimal?)decimal.Parse(columns[3], NumberStyles.Currency)
但还是不行。
【问题讨论】:
-
货币请使用
decimal,而不是double。见What is the best data type to use for money in c#? -
@Romoku 更改为十进制类型,但没有任何变化,仍然有问题
-
@AlexeiLevenkov 请看上面的编辑,试过但没用
-
我已经添加了货币的答案(也更新了链接的帖子)。
-
Price属性是什么数据类型?您的代码示例冲突,一些是Strings,而另一些是Decimal?。
标签: c# string-formatting