簡體   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