vb.net显示给定最大长度的小数的好方法是什么

时间:2010-04-28 14:34:13

标签: vb.net floating-point decimal formatting

我正在为网格视图编写自定义总计方法。我总数相当大,所以我想使用小数来得到总数。问题是我需要控制总数的最大长度。为了解决这个问题,我开始使用float,但它似乎不支持足够大的数字,我在总计列中得到这个(1.551538E + 07)。那么我可以在.ToString()中使用一些格式化字符串来保证在总字段中我永远不会超过X个字符吗?请记住,我总计整数和小数。

2 个答案:

答案 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