C# 字符串与double的比较?

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

嗨,我正在尝试为我的Web服务中的某些东西进行字符串匹配,但是我在比较双精度时遇到了困难

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岁,所以我应该