C#中decimal.Parse(t70OnlinePrice.Value)保留两位小数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中decimal.Parse(t70OnlinePrice.Value)保留两位小数相关的知识,希望对你有一定的参考价值。

小弟才接触C# 不怎么会。请教

(decimal.Parse(t70OnlinePrice.Value)).ToString("F2");
报,无法将string 隐式转换为decimal
decimal.Parse(t70OnlinePrice.Value.ToString("F2"))

decimal d= Math.Round(decimal.Parse(t70OnlinePrice.Value),2); 参考技术A 括号中先用val转换追问

不大明白。能详细点么?或者您直接写个例子好吗

追答

我错了,检查下string能转换不

为啥逗号在 int.Parse() 和 decimal.Parse() 中与 InvariantCulture 的行为不同?

【中文标题】为啥逗号在 int.Parse() 和 decimal.Parse() 中与 InvariantCulture 的行为不同?【英文标题】:Why do commas behave differently in int.Parse() and decimal.Parse() with InvariantCulture?为什么逗号在 int.Parse() 和 decimal.Parse() 中与 InvariantCulture 的行为不同? 【发布时间】:2012-01-08 20:02:21 【问题描述】:

为什么会这样:

decimal.Parse("1,2,3,45", CultureInfo.InvariantCulture)

返回小数点 12345,然而:

int.Parse("1,2,3,45", CultureInfo.InvariantCulture)

抛出异常?我希望逗号在相同的文化中得到相同的对待。如果decimal.Parse 返回 12345,为什么int.Parse 不也返回 12345?

【问题讨论】:

【参考方案1】:

See NumberStyles

int 的默认NumberStylesInteger

Integer 指示使用 AllowLeadingWhite、AllowTrailingWhite 和 AllowLeadingSign 样式。这是一种合数样式。

对比Number(用于decimal):

Number 表示使用 AllowLeadingWhite、AllowTrailingWhite、AllowLeadingSign、AllowTrailingSign、AllowDecimalPoint 和 AllowThousands 样式。这是一种合数样式。

如果您想要更多,请使用接受NumberStyles 的重载,并提供(例如)NumberStyles.NumberNumberStyles.Any

int i = int.Parse("1,2,3,45", NumberStyles.Number, CultureInfo.InvariantCulture);

【讨论】:

有趣——我没有意识到他们使用了不同的风格。我可以理解其中的一些(例如 AllowDecimalPoint),但似乎奇怪的是 AllowThousands 在两者之间是不同的。谢谢!

以上是关于C#中decimal.Parse(t70OnlinePrice.Value)保留两位小数的主要内容,如果未能解决你的问题,请参考以下文章

C#科学计数字符串,如“7.1e-003”转换为decimal类型数据

Decimal.Parse() 与 Convert.ToDecimal() [重复]

Decimal.Parse 和 Double.Parse System.FormatException 不同的行为

为啥逗号在 int.Parse() 和 decimal.Parse() 中与 InvariantCulture 的行为不同?

C#中如何保留小数点后一位

C# 错误的十进制解析/转换