• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 188
  • Last Modified:

control the decimal of an integer no.

i have a variable reciece a number like 11.45 or 11.56,
the problem i wana to know to control the decimal fraction (0.45 or 0.56) to do another operation like if the fraction is >0.5 then 11 will be 11 and if the fraction is <0.5 then 11 remain 11  
0
Sting79
Asked:
Sting79
1 Solution
 
bruintjeCommented:
Hi Sting79
you can use int but it will not always work so use a wrapper there was a piece on this on one of the VB sites but it seems gone now so here's the main thing about it

the bug decribed by MS
http://support.microsoft.com/support/kb/articles/Q138/5/22.asp

Public Function mInt(ByVal Value As Double) As Integer
  mInt = Int(Value)
End Function

:O)Bruintje
0
 
bruintjeCommented:
seems like int IS working because i can't reporduce the bug so use int(value) to round up or down
0
 
bruintjeCommented:
should test it better ROUND will do what you want
0
Never miss a deadline with monday.com

The revolutionary project management tool is here!   Plan visually with a single glance and make sure your projects get done.

 
Valliappan ANSenior Tech ConsultantCommented:
Hi Sting79,

As also already suggested by bruintje, If what you want is like:

11.50 -> 12
11.51 -> 12
11.49 -> 11

Then Round(11.xx) should work. If you want 11.50 to be 11 then do this:

Round(11.xx - .01).

Hope this helps.
0
 
aikimarkCommented:
beware of different rounding algorithms
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odeopg/html/deconconversionroundingtruncation.asp

There are also some ExpertsExchange question threads on this same question.
0
 
DJWalkerCommented:
The link supplied by aikimark states that the round function is not predictable when the rounding digit is 5. To get around this problem you can use the following instead:

y = int(x + 0.5)

This should give you predictable behaviour because int will always round down.

Points to note:

1) int returns a double so conversion might be needed (see
 bruintje's wrapper suggestion)
2) Consider using 'fix' instead of 'int' depending on the behaviour required for negative numbers (see aikimark's link)

0
 
Alon_hCommented:
Hi Sting79

Try this :


Dim i As Double

   i = 11.55

   If (i - Int(i)) > 0.5 Then
      MsgBox "A"
   Else
      MsgBox "B"
   End If


0

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now