![](/img/trans.png)
[英]How to convert dictionary<string,int> to double array of their values in c#?
[英]C# how to convert a double an int array
這是我有關堆棧溢出的第一篇文章。 如果我做錯了,請糾正我:
使用C#,我想將一個double轉換為一個可變長度的int數組,該數組的長度等於double中的位數。
例如,如果我有數字35.777778,我想將其轉換為int數組,其中
array[0] = 3
array[1] = 5
array[2] = 7
etc.
我計划遍歷數組並將array [i]與array [i + 1]比較。
雙精度數將是兩個變量數的商。 因此,它可能只有很少的數字或很多數字。
到目前為止,我已經嘗試將其轉換為字符串,然后轉換為整數數組。 但是它在小數點崩潰。
請幫我...
應該這樣做:
int[] array = 35.777778.ToString().Replace(".", String.Empty)
.Select(c => (int)Char.GetNumericValue(c))
.ToArray();
您可以按照自己的方式進行操作(轉換為字符串,然后將每個char解析為一個int),然后去除小數點。 像這樣:
var nums = decimalNum.ToString().Replace('.', '').ToCharArray();
int[] numbers = new int[nums.Count];
var x = 0;
foreach (var item in nums)
{
numbers[x] = Integer.ParseInt(item);
x++;
}
顯然,這不是最漂亮的解決方案,但它可以工作。
浮點數到十進制數字的轉換是一個難題。 在.NET中,可用的工具實際上是double.ToString方法,它method腫且在需要數字時尤其糟糕。 如您所見,所有其他答案都必須解析回整數。
如果性能很重要,那么可以使用一些不錯的雙字符串轉換算法,以適應您的需求。 這個很好:
int[] array = 35.777778.ToString().Where(c => char.IsDigit(c)).Select(c1 => Convert.ToInt32(c1.ToString())).ToArray();
即使double值包含任何字符(例如E-10),此代碼也將起作用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.