予有需要舍入数字向下Visual Basic应用程序,例如,2.556将成为2.55和2.26不

我可以使用函数来剥去字符为此超过2右使用此小数点:

Dim TheString As String
TheString = 2.556
Dim thelength = Len(TheString)
Dim thedecimal = InStr(TheString, ".", CompareMethod.Text)
Dim Characters = thelength - (thelength - thedecimal - 2)
_2DPRoundedDown = Left(TheString, Characters)

有没有更好的功能来做到这一点?

有帮助吗?

解决方案

您可以做到这一点 Math.Floor 。但是,你需要乘* 100和除法,因为你不能提供一个位数

Dim theNumber as Double
theNumber = 2.556
Dim theRounded = Math.Sign(theNumber) * Math.Floor(Math.Abs(theNumber) * 100) / 100.0

其他提示

另一种方式做到这一点,它不依赖于使用String类型:

Dim numberToRound As Decimal
Dim truncatedResult As Decimal
numberToRound = 2.556
truncatedResult = (Fix(numberToRound*100))/100

在Math.Floor()的答案是好的。我不知道到底是哪VB环境修复()中定义的。至于贾斯汀指出,Math.Floor()不会与负数的工作。你必须采取的绝对值,然后通过数字的SGN()繁殖。我不知道你会用它来获得符号功能的确切名称(不是罪())的数量。

在伪代码中,取负值考虑在内,其结果将是这样的:

result = sgn( num ) * floor( abs( num * RoundToDig ) ) / RoundToDig

- 毛茸牛MOO和解压缩。

要向下舍入

Math.Floor(number)

要修剪的字符

number.Substring(0,1)

您可以将其转换为字符串。

Dim Input As Decimal
Dim Output As Decimal
Input = 2.556
Output = Input - (Input Mod 0.01)

此将与正的和负号的工作

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top