2010-04-28 61 views
0

我正在寫一個網格視圖的自定義總計方法。我總計相當大的數字,所以我想用小數來得到總數。問題是我需要控制總數的最大長度。爲了解決這個問題,我開始使用float,但它似乎不支持足夠大的數字,我在總計列(1.551538E + 07)中得到了這個。那麼是否有一些格式化的字符串可以用在.ToString()中,以保證我在整個字段中再也找不到更多的X字符了?請記住我總計整數和小數。vb.net什麼是顯示給定的最大長度的小數的好方法

+0

瓦在我說的是我有一個具有最大可用寬度的單元格。如果你有一個小數,你只需要使用decimal.ToString(),你可以得到一個數字,例如「0.333333333」爲1/3,如果我將字符數限制爲5,我應該得到「0.333」。我會確保我有足夠的空間來表示任何整數,所以不用擔心你的擔憂。我不能說只得到一定的精確小數,因爲我可以將下列數字中的任意一個總計爲「1325316.0」或「2.32561561」。所以如果我將其限制爲7個字符,我會得到「1325316」或「2.32561」。 – 2010-04-28 15:09:57

+0

注意,如果有一個formater會爲我執行這個操作,就像理解複雜的字符串邏輯一樣,那將是理想的。 – 2010-04-28 15:11:43

回答

0

如果您對以科學計數法顯示的所有數字都很好,則可以使用"E[numberOfDecimalPlaces]"作爲格式字符串。

例如,如果你想在,比方說,12個字符封頂你的字符串,然後,佔了小數點的一個字符,顯示指數部分需要5個字符,你可以這樣做:

Function FormatDecimal(ByVal value As Decimal) As String 
    If value >= 0D Then 
     Return value.ToString("E5") 
    Else 
     ' negative sign eats up another character ' 
     Return value.ToString("E4") 
    End If 
End Function 

下面是這個函數的一個簡單的演示:

Dim d(5) As Decimal 

d(0) = 1.203D 
d(1) = 0D 
d(2) = 1231234789.432412341239873D 
d(3) = 33.3218403820498320498320498234D 
d(4) = -0.314453908342094D 
d(5) = 000032131231285432940D 

For Each value As Decimal in d 
    Console.WriteLine(FormatDecimal(value)) 
Next 

輸出:

1.20300E+000 
0.00000E+000 
1.23123E+009 
3.33218E+001 
-3.1445E-001 
3.21312E+016 
0

你可以使用Decimal.Round,但我不明白確切的問題,這聽起來像你說如果總數加起來12345.67,你可能只想顯示4位數,然後顯示2345或者你的意思是你想刪除小數?

相關問題