float.Parse 不再在 Unity 中工作 (C#)

2024-05-05

我有一个包含以下代码行的工作项目

 public InputField mass;
 float val = float.Parse(mass.text);

非常简单,用户输入一定量的质量,然后将其从文本解析为浮动,几天前这工作得很好,我什至能够多次导出该项目,没有任何问题。

今天我回来做了一些改变,在这样做之前我测试了一下并得到了这个错误。

FormatException:格式无效。 System.Double.Parse (System.String s, NumberStyles 样式,IFormatProvider 提供者)(位于 /Users/builduser/buildslave/mono/build/mcs/class/corlib/System/Double.cs:209) System.Single.Parse (System.String s) (位于 /Users/builduser/buildslave/mono/build/mcs/class/corlib/System/Single.cs:183) ControlMasa.Update ()(位于 Assets/Scripts/ControlMasa.cs:47)

我不知道为什么它突然停止工作,就像我更新了 Unity 版本或其他任何东西一样,有一天它可以工作,第二天就不行了。

有什么问题,我能做什么?


您没有分配 FormatProvider,这可能会导致错误,具体取决于您的系统。你可以尝试

float var = float.Parse(mass.text, CultureInfo.InvariantCulture);

鉴于 Mass.text 始终是有效的浮点数。当您正在处理 Unity 时,您可能还想尝试

float var = float.Parse(mass.text, new CultureInfo("en-US").NumberFormat);

它将始终解析标准美国格式的浮点数(带点)。

但是,您的代码中还可能存在其他问题,例如也许字符串并不总是可解析的浮点数,您可能需要使用 TryParse 来代替,或者确保它始终可以解析为浮点数表示形式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

float.Parse 不再在 Unity 中工作 (C#) 的相关文章