C# 将Char.GetNumericValue()转换为int会破坏信息吗?

C# 将Char.GetNumericValue()转换为int会破坏信息吗?,c#,unicode,char,gethashcode,C#,Unicode,Char,Gethashcode,我正在实现GetHashCode()。我想对名为stringid的属性中的值求和,然后除以 通过某个常量并返回结果。我正在使用GetNumericValue(): int和=0; foreach(变量ch in Id) 总和+=字符GetNumericValue(ch); 但似乎GetNumericValue返回double。是否可以将其转换为int 我以为Unicode字符用整数表示,为什么double返回? 可以忽略它吗?是的,它会丢失某些值的数据,因为这是本身就是数字的unicode字符

我正在实现
GetHashCode()
。我想对名为
stringid
的属性中的值求和,然后除以 通过某个常量并返回结果。我正在使用
GetNumericValue()

int和=0;
foreach(变量ch in Id)
总和+=字符GetNumericValue(ch);
但似乎
GetNumericValue
返回
double
。是否可以将其转换为
int

我以为
Unicode
字符用整数表示,为什么
double
返回? 可以忽略它吗?

是的,它会丢失某些值的数据,因为这是本身就是数字的unicode字符的数值,unicode包括非整数的字符:

var val=char.GetNumericValue('½');//或¼,或꠲, 或⳽
系统控制台写入线(val);
为什么双倍返还

虽然0-9是标准数字,但实际上有一些表示数字的Unicode字符,其中一些是类似浮点的
½
。让我们举个例子:

var ch = char.GetNumericValue('½');
Console.WriteLine(ch);// 0.5 output

似乎您不明白
GetNumericValue
的作用。与其继续使用它,不如解释一下您打算用
ch
做什么,我们可以建议一个合适的方法。为什么要为字符串实现不同的hashcode?为什么不干脆
Id.GetHashCode()
?等等,GetNumericValue()是否用于将字符转换为int?它不是用来获取Unicode字符的数值吗?@avivgood2如果你是指代码点:否;这将是
var代码点=(int)c