Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 错误:输入字符串的格式不正确_C#_Unity3d - Fatal编程技术网

C# 错误:输入字符串的格式不正确

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中的

检查文本中的数字3

错误:

输入字符串的格式不正确

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");
}