【发布时间】:2021-12-21 07:19:41
【问题描述】:
我有一个文本框,用户可以在其中输入双点数。例如:-
1.00
1.0000
1.23
1.000000
等,可以从用户界面输入双数。
在我的 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,...等?
编辑: 对于 1.23、1.001 等数字,我不需要 true
【问题讨论】:
-
这能回答你的问题吗? Floating point comparison functions for C#
-
我一定是遗漏了什么——为什么不只是
return (number == 1)? -
请注意,用户仍然可以输入诸如“1.0000000000000001”之类的内容,无论如何它将等于 1,因为它将(使用
double.Parse)解析为 1(双精度表示这样的值)。
标签: c# .net asp.net-core c#-4.0