VBScript:FormatNumber()/舍入问题

时间:2012-12-26 19:09:56

标签: vbscript rounding output

dim num

num = 4895390000000005 

msgbox FormatNumber(num, 0, -2, -2, false)

输出为4895390000000010

而不是4895390000000005

感谢您的帮助

3 个答案:

答案 0 :(得分:1)

好像你的“数字”大于整数,声明为十进制为我工作:

Dim num As Decimal

num = 4895390000000005

MsgBox(FormatNumber(num, 0, -2, -2, False))

答案 1 :(得分:1)

以下是使用com visible .net class。

的工作示例
With CreateObject("System.IO.StringWriter")
    .Write_7 4895390000000005
    MsgBox .GetStringBuilder().ToString()
End With

这里有参考link以获取更多信息。

答案 2 :(得分:0)

是的,如果您希望在普通的旧vbscript(.vbs)中执行此操作,则可以轻松创建一个库来处理数字函数和vbscript中不可用的类型。以下是一个简短的工作示例。如果它有用,请告诉我。

- 在视觉工作室:

Imports System

Public Class mathLibrary

    Public Function roundNumber(number As String) As String

        Dim roundedNumber As String = ""
        Dim largeNumber As Decimal = 0

        If IsNumeric(number) Then

            largeNumber = Convert.ToDecimal(number)

            roundedNumber = FormatNumber(largeNumber, 0, TriState.UseDefault, TriState.UseDefault, TriState.False)

        End If

        Return roundedNumber

    End Function

End Class

- 现在更新你的.vbs:

dim mathLib
set mathLib = CreateObject("sampleMathLibrary.mathLibrary")

Dim num
num = "4895390000000005"

msgbox mathLib.roundNumber(num)