2017-07-18 27 views
-5

什麼是浮動轉換,像這樣的最佳方法:獲取浮動的比例沒有數字小數點前

0.433432 -> 0.43 
0.672919 -> 0.67 
3.826342 -> 0.82 
6.783643 -> 0.78 

我有一個int數組,並希望所有的值轉換它包含 謝謝:)

+4

嘗試新鮮事物? – EpicKip

+0

你可以將你的原始值轉換爲int,然後減去原來的結果,然後用兩位小數打印出來 – Ian

+0

你不知道如何在C#中做到這一點,或者你根本不知道如何做到這一點?如果你的邏輯不清楚,那麼即使C#也不能幫你.. –

回答

1

你想獲得分數部分和截斷它到兩位數。如果值積極你可以這樣實現它:

private static double Solution(double value) { 
    return (long)((value - (long)value) * 100)/100.0; 
} 

測試:

double[] test = new double[] { 
    0.433432, 
    0.672919, 
    3.826342, 
    6.783643, }; 

var result = test 
    .Select(item => $"{item} -> {Solution(item)}") 
    .ToArray(); 

Console.Write(string.Join(Environment.NewLine, result)); 

結果:

0.433432 -> 0.43 
0.672919 -> 0.67 
3.826342 -> 0.82 
6.783643 -> 0.78 

編輯:這是怎麼回事在Solution方法:

  • value - (long) value - 整數部分去除

  • (long) ((...) * 100) - 擴大並截斷

  • ()/100.0 - 縮小回

如果我們有,比方說,1234.5789這三個階段會成爲:

  • 0.5789 - 整數部分去除

  • 57 - 擴大和截斷

  • 0.57 - 縮小回

+0

謝謝你會這樣做。雖然我有花車,但那是一個小小的變化 – Reeley

+0

我認爲它的價值更清楚地澄清你的意思是小(並且確實說明爲什麼積極是一個需求)?我認爲它的'(長)價值'可能溢出在大小的情況下。對於積極的我不確定 - 是否只是一個不想爲負數定義預期行爲的情況?如果我做'解決方案(-1.41421)'我得到'-0.41'這是我可能期望的,所以它看起來像積極的並不是真的需要...... – Chris

0

您可以減去整數值。

for(int i = 0; i < array.Length; i++) 
    array[i] -= ((int)array[i]); 
+0

那好像很合理。 Facepalm ^^ – Reeley

0
value = Math.Truncate(100 * value)/100; 

OR

decimal result = TruncateDecimal(0.433432, 2); 
+0

什麼是'TruncateDecimal'?它看起來像它必須是你的班級中的一種方法,但你沒有向我們展示代碼... – Chris

+0

此外,這還不行,你仍然必須擺脫小數點前的數字。所以它顯示0.xx – Reeley

+0

請查看[如何回答](https://stackoverflow.com/help/how-to-answer)並更新您的答案以提供更多詳細信息。具體而言,如果你解釋瞭如何解決問題,這將是有益的 – Ortund