不会将字符串转换为十进制 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#)