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

9

Visual Studio 无法将我的字符串转换为十进制数。

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

代码:

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

同样,Convert.toDecimal(test)也是一样的。

编辑:感谢回答,我在网上寻找十进制的工作原理时,每个人都使用“。”而不是“,”。 很抱歉我和这篇文章是如此愚蠢的。再次感谢回答 :)


只是出于好奇,它能解析 "123,95" 吗? - Vlad
2
Jon Skeet 刚刚挽救了你的问题,使其不被关闭。 - Force444
刚刚尝试了一下,它有效了...我已经很久没有写代码了,所以我在网上搜索关于小数点的工作方式,并且到处都是“。”。 - Pepps
@Pepps 十进制字面量在编程语言中通常表示为123.95。然而,该十进制的字符串表示因地区而异。.NET试图友好地读取十进制,以最自然的方式书写它们(根据计算机的区域设置)。 - p.s.w.g
2个回答

24

很可能您当前的文化习惯不使用.作为小数分隔符。尝试在解析字符串时指定不变文化

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);

它对我有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接