不会将字符串转换为十进制 c#(输入字符串的格式不正确。)

Posted

技术标签:

【中文标题】不会将字符串转换为十进制 c#(输入字符串的格式不正确。)【英文标题】:Won't convert string to decimal c# (Input string was not in a correct format.) 【发布时间】:2014-03-25 19:22:01 【问题描述】:

Visual Studio 不会将我的字符串转换为十进制

错误:输入字符串的格式不正确。

代码:

string test = "123.95";
decimal test1 = decimal.parse(test); // string being an int "123" doesnt cause this

还有 Convert.toDecimal(test);做同样的事情。

编辑:感谢您的回答,我在网上寻找小数的工作原理,每个人都在使用“。”并不是 ','。 对不起,我和这篇文章多么愚蠢。再次感谢您的回答:)

【问题讨论】:

只是出于好奇,它可以解析"123,95"吗? Jon Skeet 刚刚保存了您的问题,以免被关闭 刚试了一下,它工作了......自从我编码以来已经很长时间了。所以在网上寻找小数的工作原理并且有'。无处不在。 @Pepps decimal literals 在编程语言中几乎普遍表示为123.95。但是,该十进制的字符串表示在地球上从一个地区到另一个地区变化很大。 .NET 正在尝试以您最自然的方式编写它们(根据您计算机上的语言环境设置)以十进制形式读取。 【参考方案1】:

您当前的文化可能不使用. 作为小数分隔符。解析字符串时尝试指定invariant culture:

using System.Globalization;

...

string test = "123.95";
decimal test1 = decimal.Parse(test, CultureInfo.InvariantCulture); 

或者,您可以指定使用所需特定格式的文化:

string test = "123.95";
var culture = new CultureInfo("en-US");
decimal test1 = decimal.Parse(test, culture); 

【讨论】:

【参考方案2】:

使用此代码 -

var test1 = "123.95";
decimal result;
decimal.TryParse(test1, out result);

它对我有用。

【讨论】:

以上是关于不会将字符串转换为十进制 c#(输入字符串的格式不正确。)的主要内容,如果未能解决你的问题,请参考以下文章

C# 将字符串转换为双精度/十进制并返回字符串,保留尾随零,为千位添加逗号

如何将 gi-normous 整数(字符串格式)转换为十六进制格式? (C#)

将十进制转换为小数点后两个零的字符串,和逗号? C# [重复]

在 C# 中将字符串转换为十六进制字符串

进制转换问题

C#通过分隔数字将十进制转换为字符串[重复]