C# 字符串与double的比较?
嗨,我正在尝试为我的Web服务中的某些东西进行字符串匹配,但是我在比较双精度时遇到了困难C# 字符串与double的比较?,c#,linq,double,C#,Linq,Double,嗨,我正在尝试为我的Web服务中的某些东西进行字符串匹配,但是我在比较双精度时遇到了困难 public List<Customers> GetCustomer(string anything) { List<Customers> customers = customermembers.Where(n => string.Equals(n.CustomerID, anything, StringComparison.CurrentCultureIgno
public List<Customers> GetCustomer(string anything)
{
List<Customers> customers = customermembers.Where(n =>
string.Equals(n.CustomerID, anything, StringComparison.CurrentCultureIgnoreCase)
|| string.Equals(n.FirstName, anything, StringComparison.CurrentCultureIgnoreCase)
|| string.Equals(n.LastName, anything, StringComparison.CurrentCultureIgnoreCase)
|| double.Equals(n.Age, anything, StringComparison.CurrentCultureIgnoreCase) //this like
).ToList();
return customers;
}
在进行比较之前,将double转换为String。尝试以下操作:将查询的最后一行替换为
|| String.Equals(SqlFunctions.StringConvert(n.Age), anything, StringComparison.CurrentCultureIgnoreCase)
在进行比较之前,将double转换为String。尝试以下操作:将查询的最后一行替换为
|| String.Equals(SqlFunctions.StringConvert(n.Age), anything, StringComparison.CurrentCultureIgnoreCase)
像这样的
public bool DoubleEqualsString(double doubleValue, string stringValue)
{
double convertedValue;
if (Double.TryParse(stringValue, out convertedValue))
return convertedValue == doubleValue;
return false;
}
像这样的
public bool DoubleEqualsString(double doubleValue, string stringValue)
{
double convertedValue;
if (Double.TryParse(stringValue, out convertedValue))
return convertedValue == doubleValue;
return false;
}
创建一个函数,尝试将字符串解析为double并返回-1表示“不走运”,怎么样
public双解析年龄(字符串年龄){
双解析数=-1;
双色锥虫(年龄,外周);
返回数据集;
}
公共列表GetCustomer(字符串任意项)
{
双双1=年龄;
列出客户=客户成员。其中(n=>
等于(n.CustomerID,anything,StringComparison.CurrentCultureIgnoreCase)
||string.Equals(n.FirstName、anything、StringComparison.CurrentCultureIgnoreCase)
||string.Equals(n.LastName,anything,StringComparison.CurrentCultureIgnoreCase)
||n.Age==ParseAge(任何东西)//像这样
).ToList();
返回客户;
}
创建一个函数,尝试将字符串解析为double并返回-1表示“不走运”,怎么样
public双解析年龄(字符串年龄){
双解析数=-1;
双色锥虫(年龄,外周);
返回数据集;
}
公共列表GetCustomer(字符串任意项)
{
双双1=年龄;
列出客户=客户成员。其中(n=>
等于(n.CustomerID,anything,StringComparison.CurrentCultureIgnoreCase)
||string.Equals(n.FirstName、anything、StringComparison.CurrentCultureIgnoreCase)
||string.Equals(n.LastName,anything,StringComparison.CurrentCultureIgnoreCase)
||n.Age==ParseAge(任何东西)//像这样
).ToList();
返回客户;
}
请使用方法将字符串转换为双精度,然后可以使用==运算符进行比较请使用方法将字符串转换为双精度,然后可以使用==运算符进行比较替换:
double double1 = Age;
与
然后在比较中使用:
string.Equals(double1, anything, StringComparison.CurrentCultureIgnoreCase)
替换:
double double1 = Age;
与
然后在比较中使用:
string.Equals(double1, anything, StringComparison.CurrentCultureIgnoreCase)
你如何比较双人间
我假设您想要比较两个表示年龄的双精度值,并且anything
确实不是字符串,而是双精度
(从这个问题上很难区分,因为anything
的使用方式没有多大意义)
您可以做的最好的事情是将Age
的类型从double
切换到decimal
(如果Age是整数,则切换为int
)。这样做可以避免舍入错误
但是,如果您想坚持使用浮点数,只需使用=
比较两个double
值即可:
a == b
或者使用静态对象。Equals
方法:
Equals(a, b)
如果对年龄进行计算,可能会出现舍入问题,然后必须使用一个小的ε值来表示要使用的舍入精度:
const double Epsilon = 0.0000000001;
var areEqual = Math.Abs(a - b) < Epsilon;
const double Epsilon=0.0000000001;
var areEqual=Math.Abs(a-b)
你如何比较双人间
我假设您想要比较两个表示年龄的双精度值,并且anything
确实不是字符串,而是双精度
(从这个问题上很难区分,因为anything
的使用方式没有多大意义)
您可以做的最好的事情是将Age
的类型从double
切换到decimal
(如果Age是整数,则切换为int
)。这样做可以避免舍入错误
但是,如果您想坚持使用浮点数,只需使用=
比较两个double
值即可:
a == b
或者使用静态对象。Equals
方法:
Equals(a, b)
如果对年龄进行计算,可能会出现舍入问题,然后必须使用一个小的ε值来表示要使用的舍入精度:
const double Epsilon = 0.0000000001;
var areEqual = Math.Abs(a - b) < Epsilon;
const double Epsilon=0.0000000001;
var areEqual=Math.Abs(a-b)
在您使用字符串进行比较之前,我肯定会将其转换为双精度字符串
进一步的double.Equals有点棘手,因为这个方法需要处理数字逗号后的确切位数,这意味着
double d1 = 0.33333d;
double d2 = 1/3;
bool result = double.Equals(d1, d2);
虽然你期望他们是平等的,但这显然是错误的
为了避免这个问题,我会将逗号后面的双精度数字减少到逗号后面的数字更少的数字
例如:
会融化成
double d1 = 0.1678
double d2 = 0.1564
现在您可以比较它们而不用担心。在您使用字符串进行比较之前,我肯定会将其转换为双精度字符串
进一步的double.Equals有点棘手,因为这个方法需要处理数字逗号后的确切位数,这意味着
double d1 = 0.33333d;
double d2 = 1/3;
bool result = double.Equals(d1, d2);
虽然你期望他们是平等的,但这显然是错误的
为了避免这个问题,我会将逗号后面的双精度数字减少到逗号后面的数字更少的数字
例如:
会融化成
double d1 = 0.1678
double d2 = 0.1564
现在您可以比较它们而不用担心。我不知道为什么要将字符串与双精度字符串进行比较,以及这是否合法?不知道为什么要使用双精度字符串表示年龄。你期望这些顾客多大岁数@不要误会我的意思,但在现实世界中,你不能说一个人的年龄是25.56岁,所以我应该