C# 如何使用float.Parse从类似“quot”的字符串中获取小数点;5/2“;

C# 如何使用float.Parse从类似“quot”的字符串中获取小数点;5/2“;,c#,string,parsing,unity3d,C#,String,Parsing,Unity3d,如果我有一个字符串“5/2”,我怎么能使用float.Parse得到2.5呢?在Unity3D中执行此操作时,会出现无效的格式错误。它适用于整数,如“5”将得到5,但我正在制作一个图形计算器,很多时候直线的斜率是一个分数。您需要拆分字符串,单独解析值,然后进行除法。因此: string[] tokens = input.Split('/'); float result = float.Parse(tokens[0])/float.Parse(tokens[1]); 当然,您应该在此添加错误处理

如果我有一个字符串“5/2”,我怎么能使用float.Parse得到2.5呢?在Unity3D中执行此操作时,会出现无效的格式错误。它适用于整数,如“5”将得到5,但我正在制作一个图形计算器,很多时候直线的斜率是一个分数。

您需要拆分字符串,单独解析值,然后进行除法。因此:

string[] tokens = input.Split('/');
float result = float.Parse(tokens[0])/float.Parse(tokens[1]);

当然,您应该在此添加错误处理,但这是“概念验证”质量代码。

这不是一个有效的数字,它是一个需要计算的表达式。您可以使用
DataTable.Compute
实现这一点。也可以使用此技术计算更复杂的表达式

var result = new DataTable().Compute("5/2",null);
注意:Datatable非常昂贵,因此您可以为自己创建一个实例或静态成员来保存
Datatable
的引用


阅读有关compute in的更多信息。

您的问题在于:
5/2
不是有效数字,而是必须计算的表达式。将解析器编码为读者的练习。您可以检查这个问题的答案:另一个选项是为现有的解决方案实现OR或谷歌。OP请求<代码>浮点.PARSE()/<代码>解决方案,但是您应该考虑为EythBoad添加<代码>浮点.TyPARSESER()/<代码>。否?我得到的错误是“string.Split(params char[])”的最佳重载方法匹配有一些无效参数我只有你有的参数,但把我的字符串放在那里。@TreB我没有考虑就放了一个转义符,但这只需要反斜杠,应该使用jones的编辑来修复。@TreB可能是一个打字错误。如果要使用字符串拆分,请使用
input.split(新字符串[]{“foo”},StringSplitOptions.None)
。检查。@TreB是的,对不起,我没有运行代码。
String
类中有几个
Split
方法的重载,您提到的可能是最好的,我已经更新了答案来反映这一点。我不知道这个。很高兴知道!这一个在Unity中不起作用,因为Unity不使用.NET4.5。出于这个原因,我接受了另一个,但是谢谢你的回答。我将来可能会在其他项目中使用它。@TreB为什么需要.Net4.5?这种方法存在于哦,我的坏。微软参考网站上的.NET4.5。同样在Unity中,除非我做错了,否则它会说我不能使用System.Data命名空间,因为在系统中找不到数据。我只是以为是因为这个。如果我错了,很抱歉。不过,我希望这将帮助未来的读者:)顺便说一句,您需要添加对
System.Data.dll
的引用,并使用对
System.Data
命名空间的引用才能使其正常工作。