C# 错误:输入字符串的格式不正确
检查文本中的数字3 错误: 输入字符串的格式不正确C# 错误:输入字符串的格式不正确,c#,unity3d,C#,Unity3d,检查文本中的数字3 错误: 输入字符串的格式不正确 public Text Timer; private void FixedUpdate() { if (Convert.ToDouble(Timer.text) == 3) { Debug.Log("w"); } } 我们不知道您的Time.text包含哪些字符串内容,但您应该使用其中一个,或者因为Unity API中的
public Text Timer;
private void FixedUpdate()
{
if (Convert.ToDouble(Timer.text) == 3)
{
Debug.Log("w");
}
}
我们不知道您的
Time.text
包含哪些字符串内容,但您应该使用其中一个,或者因为Unity API中的所有内容都使用float
。或者,您也可以将其强制转换为(float)
,因为您基本上希望将其与int
值进行比较,但精度并不重要
因为第二点是:您不应该通过==
直接比较浮点类型的数字(请参阅)。float
(或double)值在逻辑上可能具有3
值,例如(3f+3f+3f)/3f
,但由于浮点不精确,导致出现2.99999999999
或3.00000001
值,在这种情况下,与3
的比较可能会意外失败
而是使用内置的统一,基本上等于使用
if(Math.Abs(a-b) <= epsilon)
但是请注意,如果这是一个持续增加的计时器,则可能永远不会精确地命中值
3
,因此您可能希望在其周围使用某个阈值范围,如
if (double.TryParse(Timer.text, out var time) && time - 3 >= someThreshold)
{
Debug.Log("w");
}
或者简单地使用例如
if (double.TryParse(Timer.text, out var time) && time >= 3)
{
Debug.Log("w");
}
如果您只希望任何大于或等于
3
的值,文本框是否为空?最好使用Double.TryParse,它会告诉您字段是否不正确,将Timer.text
打印为Debug.Log(““+Timer.text+”)代码>。注意双引号中的单引号。
if (double.TryParse(Timer.text, out var time) && time >= 3)
{
Debug.Log("w");
}