将 Char.GetNumericValue() 转换为 int 会破坏信息吗?
Will converting Char.GetNumericValue() to int destroy information?
我正在实施 GetHashCode()
。我想对名为 string Id
的 属性 中的值求和,然后除以
通过一些常数和 return 结果。我正在使用 GetNumericValue()
:
int sum = 0;
foreach (var ch in Id)
sum += char.GetNumericValue(ch);
不过好像是GetNumericValue
returnsdouble
。可以将其转换为 int
吗?
我以为Unicode
个字符是用整数表示的,为什么是double
return?
可以忽略它吗?
是的,它会丢失某些值的数据,因为这是 的 unicode 字符的数值本身是数字 - 并且 unicode 包含非整数的字符:
var val = char.GetNumericValue('½'); // or ¼, or ꠲, or ⳽
System.Console.WriteLine(val);
Why is double returned?
虽然 0-9 是标准数字,但实际上有一些 Unicode 字符表示数字,其中一些是浮点数,如 ⅔
或 ½
.让我们举个例子:
var ch = char.GetNumericValue('½');
Console.WriteLine(ch);// 0.5 output
我正在实施 GetHashCode()
。我想对名为 string Id
的 属性 中的值求和,然后除以
通过一些常数和 return 结果。我正在使用 GetNumericValue()
:
int sum = 0;
foreach (var ch in Id)
sum += char.GetNumericValue(ch);
不过好像是GetNumericValue
returnsdouble
。可以将其转换为 int
吗?
我以为Unicode
个字符是用整数表示的,为什么是double
return?
可以忽略它吗?
是的,它会丢失某些值的数据,因为这是 的 unicode 字符的数值本身是数字 - 并且 unicode 包含非整数的字符:
var val = char.GetNumericValue('½'); // or ¼, or ꠲, or ⳽
System.Console.WriteLine(val);
Why is double returned?
虽然 0-9 是标准数字,但实际上有一些 Unicode 字符表示数字,其中一些是浮点数,如 ⅔
或 ½
.让我们举个例子:
var ch = char.GetNumericValue('½');
Console.WriteLine(ch);// 0.5 output