2014-03-31 113 views
2

当我调用这个函数像这样Rounded(50.080,3)我得到“50.08”如何强制保持尾随零?圆号但保留精确数字

Public Function Rounded(ByVal Number, ByVal Decimals) 
    Rounded = Int(Number * 10^Decimals + 1/2)/10^Decimals 
End Function 
+2

你的意思是零尾随做到这一点? – Blorgbeard

+2

你是不是指尾随零?这是一个演示问题,实际上不应该是舍入函数的关注。 – DeanOC

回答

3
Dim RoundedString As String = FormatNumber(Rounded, Decimals, , , TriState.False) 

应该为你

+0

这不起作用,因为它将“1542.800”转换为“1,542.800” – XK8ER

+0

对不起。我编辑它,现在应该修复它。 – Schickmeister

1

请,为自己的健康,打开Option StrictOption Explicit,停止使用返回变量,除非你真的想,并删除旧的VB6的功能(如Int)。

那么你也许可以连同字符串格式像这样破解的东西:

Public Function Rounded(number As Decimal, decimals As Integer) As String 
    Return number.ToString("0." & New String("0"c, decimals)) 
End Function 

这是一般更好地自己,如果你可以使用格式字符串,不过,因为在num.ToString("0.000")为小数点后三位,和完全放弃Rounded