我正在为网格视图编写自定义总计方法。我总数相当大,所以我想使用小数来得到总数。问题是我需要控制总数的最大长度。为了解决这个问题,我开始使用float,但它似乎不支持足够大的数字,我在总计列中得到这个(1.551538E + 07)。那么我可以在.ToString()中使用一些格式化字符串来保证在总字段中我永远不会超过X个字符吗?请记住,我总计整数和小数。
答案 0 :(得分:0)
你可以使用Decimal.Round,但我不明白确切的问题,听起来你说如果总计加起来为12345.67,你可能只想显示4位数,然后显示2345或你只是想删除小数?
答案 1 :(得分:0)
如果您对以科学计数法显示的所有数字都很好,则可以使用"E[numberOfDecimalPlaces]"
作为格式字符串。
例如,如果您想将字符串限制为12个字符,那么,考虑到小数点的一个字符和显示指数部分所需的五个字符,您可以这样做:
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