在 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 在评论中所建议的那样。
我有一个文本框,用户可以在其中输入双点数。例如:-
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 在评论中所建议的那样。