繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM