2012-11-06 40 views
0

因爲有些人顯然認爲千兆字節爲十進制是準確存儲的可用存儲空間現在我有下面的代碼把它轉換成一個字節表示一個好辦法:轉換十進制到一般的整數作爲字符串

Convert.ToString(Convert.ToInt64(Math.Floor(someDecimal * 1024 * 1024))); 

現在,雖然這工作(as-in返回預期的結果),它不完全優雅。

有沒有更優雅的方式來做這種轉換? (地板是必要的)。

+0

1024^2是兆字節,而不是字節。 –

+0

如果'someDecimal'確實包含GB,這會給你千字節表示。 –

+0

爲什麼選擇Math.Floor? – Rik

回答

5

你爲什麼不只是使用:

var result = ((Int64)(someDecimal * 1024 * 1024 * 1024)).ToString(); 

當然,應該在一些輔助的方法進行封裝。你不希望在你的代碼中出現這種情況。

+0

雖然您可能想使用'long' –

+0

@lc:是的,您說得對。修正了,謝謝。 –

+0

因爲我不確定明確的轉換是舍入還是截斷?也不知道Math.Pow,還是不知道一個常數是否會顯着提高性能? 我很樂意提供建議。 –

0

考慮將此行移至單獨的方法(例如,gigabytesToBytes(someDecimal))。這會讓你的意圖更清楚,如果你發現了錯誤 - 就像評論中發現的那樣 - 你可以在一個地方修復它們。

+1

謝謝,我已經擁有了,儘管我承認你對方法名稱的建議比現在擁有的「whatTheHellIsWrongWithYou(someDecimal)」更好。 :) –

2

嘗試:

(someDecimal * Math.Pow(1024,3) - 0.5m).ToString("F0") 
相關問題