[英]error: The input string was not in the correct format
检查文本中的数字 3
错误:
输入字符串的格式不正确
public Text Timer;
private void FixedUpdate()
{
if (Convert.ToDouble(Timer.text) == 3)
{
Debug.Log("w");
}
}
我们不知道您的Time.text
具有哪个字符串内容,但您应该使用double.TryParse
或者因为 Unity API 中的所有内容都使用float
,也许宁可使用float.TryParse
。 或者,您也可以将其转换为(float)
,因为您基本上想将其与int
值进行比较,无论如何精度并不重要。
因为第二点是:您永远不应该通过==
直接比较浮点类型数(请参阅我应该如何进行浮点比较? )。 一个float
(或双精度)值可能在逻辑上应该具有值3
,例如(3f + 3f + 3f) / 3f
但由于浮点不精确导致值如2.9999999999
或3.000000001
在这种情况下与3
进行比较可能会意外失败。
而是使用 Unity 内置的Mathf.Approximately
基本上等于使用
if(Math.Abs(a-b) <= epsilon)
浮点数可以不同于零的最小值。
所以我建议宁愿做类似的事情
if (double.TryParse(Timer.text, out var time) && Mathf.Approximately((float)time, 3))
{
Debug.Log("w");
}
但是请注意,如果这是一个不断增加的计时器,您可能永远不会准确地达到值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
的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.