在 C# 中针对浮点数验证整数值

Validating an integer value against float in C#

我有一个文本框,用户可以在其中输入双点数。例如:-

1.00
1.0000
1.23
1.000000

等,可以输入UI中的双数。

在我的 C# 代码中,我必须验证用户是否输入了 1。

1.00
1.0000
1.000000

全部视为1,通过验证。 我正在考虑转换为 Int

public bool Validate(double number)
{
  int v = Convert.ToInt32(number)
  if(v == 1)
   return true;
}

但问题是我会失去精度,1.00 和 1.001 的结果都会是 1,而 1.001 会错误地返回为 true,而我不需要。 如何在 C# 中检查用户是否从 UI 输入了 1.00,1.000,...etc?

编辑: 对于 1.23、1.001 等数字,我不需要 true

您可以使用decimal数据类型

public bool Validate(double number)
{
    var num = decimal.Parse(number.ToString());
    if(num == 1)
        return true;
    return false;
}

将值与 1.0 进行比较应该可以解决问题:

bool isOne = val == 1.0;

(浮点数的相等性比较可能很棘手,但这个方法符合您的预期。)

编辑:使用 1 而不是 1.0 也可以,正如 Matthew Watson 在评论中所建议的那样。