[英]Will converting Char.GetNumericValue() to int destroy information?
我正在实施GetHashCode()
。 我想对一个名为string Id
的属性中的值求和,然后除以某个常数并返回结果。 我正在使用GetNumericValue()
:
int sum = 0;
foreach (var ch in Id)
sum += char.GetNumericValue(ch);
但似乎GetNumericValue
返回double
。 可以将其转换为int
吗?
我以为Unicode
字符是用整数表示的,为什么会返回double
呢? 可以忽略它吗?
为什么会双倍返回?
虽然 0-9 是标准数字,但实际上有一些Unicode字符代表数字,其中一些是浮点数,例如⅔
或½
。 让我们举个例子:
var ch = char.GetNumericValue('½');
Console.WriteLine(ch);// 0.5 output
是的,它会丢失某些值的数据,因为这是unicode字符的数值,而 unicode 包括非整数字符:
var val = char.GetNumericValue('½'); // or ¼, or ꠲, or ⳽
System.Console.WriteLine(val);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.