Round Function

I am currently programming in a language called Visual Dataflex.    It can get the job done, but it lacks many of the creature comforts of C++ and VB.

There is on round decent round function and there is no Array type.  there is an Array class, but the syntax for using it and most other VDF stuff is very long and clunky.

Hence my problem.  I want to create my own Round function.  Back in C++, I made one with a CHAR and it was pretty easy.  This function will only need to round things after the decimal place.  Everything I've tried so far is very long and I was wondering if anyone can suggest an algorithm for rounding after the decimal point, assuming that I can't use an array.

Essentially, I want the function to take two arguments, the number and the number to the right of the decimal place (Just like in other languages).

I know this is painfully easy, but I'm having a block.

Thanks,

Bill

wgrmbaAsked:
Who is Participating?
 
griesshConnect With a Mentor Commented:
AHHHH! It works again. Sorry, but I never got anything through to EE. So here you go:
Since I don't know the syntax of your language, here a very general function for rounding to a specific decimal. It is really just to give you the idea...

float round (float f, int dec)
{
  int k =1;
  for (i=0; i<dec; i++) { // Multiply by dec 10s
     f=f*10;
     k=k*10;
  }
  // Rounding is +.5 then take int
  f = f+0.5;
  int res = int (f);

  // Make it a float again
  float ret = ((float) res) / k;

  return (ret);
}

======
Werner
0
 
TriskelionCommented:
>>This function will only need to round things after the decimal place.  

Can you simply add the logic of:
   If the number after the decimal is greater than or equal to 50 then add one to the number before the decimal and return it?
0
 
MatthewLCommented:
Hi wgrmba,

You can add .5 to the number and then cast to an integer.

To handle rounding to the 1 decimal place, multiply by 10 add .5, cast, divide by 10

To handle rounding to the nth decimal place, muliply by 10^n, add .5, cast, divide by 10^n

Matt
0
Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

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

 
TrueDrakeCommented:
Hi,

z = 1.56
x = Round(z, 1)
MsgBox x

Enjoy
0
 
t0t0Commented:

integer = ABS(float)

IF (float - integer >= 0.5)
  integer = integer + 1
END-IF

or in C


.
.
i = abs(f);

if (f - i >= 0.5)
  i++;

.
.


0
 
griesshCommented:
0
 
griesshCommented:
0
 
griesshCommented:
0
 
griesshCommented:
0
 
griesshCommented:
0
 
griesshCommented:
I can't post anymore ... *&@*&$*&)(&(*^%!!!!
0
 
ozoCommented:
That doesn't work for negative numbers.
0
 
griesshCommented:
ozo

Thanks for the comment. As I said: "It is really just to give you the idea...".

There is NO checking of any kind in this function! But I guess that was not asked for anyhow ...

======
Werner
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.