Round Command Upgrade Request


#1

Can we upgrade the round command to function more like VB and Excel? I think it is useful to be able to specify significant digits.

PAC Control Round:

VB Round:

Excel Round:


#2

Yes, it would be nice if it was built in. You could put the following in a subroutine. If you only want to round after the decimal point, then it can be reduced to a couple lines.

//Value is the float that you want to round
//DecimalPlace is an integer of the decimal place you want to round to, negative numbers work too
//Decimal place must be in the range -7..7 due to floating point precision

if(DecimalPlace == 0) then
  Value = Round(Value);
else
  if(DecimalPlace < 0) then  //Opto Power function only works with positive exponents!!!
    fMultiplier = 1 / Power(10, AbsoluteValue(DecimalPlace));
  else  
    fMultiplier = Power(10, DecimalPlace);
  endif

  Value = Round(Value * fMultiplier) / fMultiplier;
endif

#3

Hi philip,
Thanks for the nice sample code.
I was surprised to see your comment on “positive exponents.” I see that in the doc, but I tried it with -1 and it worked fine, so perhaps that doc note is old, I’ll get it updated.
Thanks again,
Mary


#4

Hi Mary,

I wrote the code in 9.3, and it would not work with negative exponents as the documentation states. There must of been an update since then.

Philip


#5

Okay, I must of read the docs before testing it - I may have been ill.:slight_smile:

The negative exponents do work in 9.3, so the code can be simplified to the following:

fMultiplier = Power(10, DecimalPlace);
Value = Round(Value * fMultiplier) / fMultiplier;