【发布时间】:2010-11-24 08:27:19
【问题描述】:
我正在尝试将1200.00 转换为decimal,但Decimal.Parse() 删除了.00。我尝试了一些不同的方法,但它总是删除 .00,除非我提供的分数不是 0。
string value = "1200.00";
方法一
var convertDecimal = Decimal.Parse(value , NumberStyles.AllowThousands
| NumberStyles.AllowDecimalPoint | NumberStyles.AllowCurrencySymbol);
方法二
var convertDecimal = Convert.ToDecimal(value);
方法3
var convertDecimal = Decimal.Parse(value,
NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture);
如何将包含1200.00 的string 转换为包含1200.00 的decimal?
【问题讨论】:
-
我认为零是隐含的。 “.00”部分存在于十进制中,即使您看不到它们。出于格式化目的,您应该显示它们,但您不必担心。
-
@nmiranda:不,
decimal保持适当的比例。decimal.Parse("1200.000")和decimal.Parse("1200.00")将返回不同的值,保留尾随 0 的数量。 -
我同意@NelsonMiranda。实际上 decimal.Parse("1200.000").Equals(decimal.Parse("1200.00")) 返回 true,所以我看不出这个问题的意义......
-
我可以确认这是非美国本地化的问题。我的电脑设置为意大利语区域设置,decimal.Parse("1200.00") 返回 120000,而 decimal.Parse("1200,00") 返回 1200.00