为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
BIG阳 2021-06-16 22:13:29
我有一个带有以下代码行的工作项目 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 的版本或其他任何东西,有一天它可以工作,而下一天却没有。有什么问题,我该怎么办?
查看完整描述

2 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

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

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

鉴于 mass.text 将始终是一个有效的浮点数。在处理 Unity 时,您可能还想尝试

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

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

但是,您的代码中也可能存在其他问题,例如,字符串可能并不总是可解析的浮点数,您可能想改用 TryParse 或确保它始终可以解析为浮点数表示。


查看完整回答
反对 回复 2021-06-20
?
万千封印

TA贡献1891条经验 获得超3个赞

从你的问题给出


InputField mass = null; // assign this first

float mass_ = "0.1f" //sample value

if(float.TryParse(mass.text, out mass_))

{

    /// everything is ok

}

else

{

    /// something wrong. mass.text has incorrect float value

}

尝试,而不是Parse一个TryParse功能。


查看完整回答
反对 回复 2021-06-20
  • 2 回答
  • 0 关注
  • 171 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信