开发者

Syntax for rounding up in VB.NET

开发者 https://www.devze.com 2022-12-30 14:27 出处:网络
What is the syntax to round up a decimal le开发者_如何学JAVAaving two digits after the decimal point?

What is the syntax to round up a decimal le开发者_如何学JAVAaving two digits after the decimal point?

Example: 2.566666 -> 2.57


If you want regular rounding, you can just use the Math.Round method. If you specifially want to round upwards, you use the Math.Ceiling method:

Dim d As Decimal = 2.566666
Dim r As Decimal = Math.Ceiling(d * 100D) / 100D


Here is how I do it:

Private Function RoundUp(value As Double, decimals As Integer) As Double

    Return Math.Ceiling(value * (10 ^ decimals)) / (10 ^ decimals)

End Function


Math.Round is what you're looking for. If you're new to rounding in .NET - you should also look up the difference between AwayFromZero and ToEven rounding. The default of ToEven can sometime take people by surprise.

dim result = Math.Round(2.56666666, 2)


You can use System.Math, specifically Math.Round(), like this:

Math.Round(2.566666, 2)


Math.Round(), as suggested by others, is probably what you want. But the text of your question specifically asked how to "roundup"[sic]. If you always need to round up, regarless of actual value (ie: 2.561111 would still go to 2.57), you can do this:

Math.Ceiling(d * 100)/100D


The basic function for rounding up is Math.Ceiling(d), but the asker specifically wanted to round up after the second decimal place. This would be Math.Ceiling(d * 100) / 100. For example, it may multiply 46.5671 by 100 to get 4656.71, then rounds up to get 4657, then divides by 100 to shift the decimal back 2 places to get 46.57.


I used this way:

Math.Round(d + 0.49D, 2)


Math.Ceiling((14.512555) * 100) / 100 

Dot net will give you 14.52. So, you can use above syntax to round the number up for 2 decimal numbers.


I do not understand why people are recommending the incorrect code below:

Dim r As Decimal = Math.Ceiling(d * 100D) / 100D

The correct code to round up should look like this:

Dim r As Double = Math.Ceiling(d)
  1. Math.Ceiling works with data type Double (not Decimal).
  2. The * 100D / 100D is incorrect will break your results for larger numbers.
  3. Math.Ceiling documentation is found here: http://msdn.microsoft.com/en-us/library/zx4t0t48.aspx
0

精彩评论

暂无评论...
验证码 换一张
取 消