[Gambas-user] Rounding to 2 decimals

Tobias Boege tobiasboege01 at ...1601...
Fri Jul 27 20:18:59 CEST 2012


On Fri, 27 Jul 2012, rocko wrote:
> On Fri, 2012-07-27 at 19:49 +0200, Tobias Boege wrote:
> > On Fri, 27 Jul 2012, rocko wrote:
> > > On Fri, 2012-07-27 at 19:25 +0200, Tobias Boege wrote:
> > > > On Fri, 27 Jul 2012, rocko wrote:
> > > > > Using '.value instead of .text gives an error:
> > > > > "Unknown symbol "value" in class TextBox"
> > > > > 
> > > > > On Fri, 2012-07-27 at 02:05 +0200, LeszekK wrote:
> > > > > > 'Do not use textboxes for mathematical calculations
> > > > > > 
> > > > > > Dim prmAmnt As Integer
> > > > > > Dim totAmnt As Integer
> > > > > > Dim perAmnt As Single
> > > > > > 
> > > > > > prmAmnt = prmBox.value 'valuebox! not textbox
> > > > > > totAmnt = totBox.value 'valuebox! not textbox
> > > > > > perAmnt = Round((prmAmnt / totAmnt * 100), 2)
> > > > > > ValueBox1.Value = perAmnt & "%"
> > > > > > 
> > > > > > I not tested the code but it should work.
> > > > > > 
> > > > 
> > > > First, I herewith want to join the folks who urge to not top-post.
> > > > 
> > > > If you have a deeper look at the error message above, you'll notice that you still use TextBox
> > > > instead of ValueBox, right?
> > > > 
> > > > Regards,
> > > > Tobi
> > > 
> > > Ah yes the 'ol top vs bottom post --oh well
> > > Yes I figured that out and replaced my textBoxes with valueBoxes
> > > but still can't get it to work 
> > > 
> > > 
> > 
> > :)
> > OK, so to sum up, two things were wrong with your very first code:
> > a) Used TextBox without conversion -> use ValueBox instead
> > b) To round to decimals, the second argument to Round() must be negative
> >    -> use -2
> > 
> > This gives:
> > 
> > Dim prmAmnt As Integer
> > Dim totAmnt As Integer
> > Dim perAmnt As Single
> > 
> > prmAmnt = prmBox.Value
> > totAmnt = totBox.Value
> > perAmnt = Round(prmAmnt / totAmnt * 100, -2)
> > 
> > Print perAmnt
> > 
> > This code works for me (but without the ValueBox input stuff, I used
> > prmAmnt = 2 and totAmnt = 3 hard-coded instead)
> > 
> > If this does not work, please say what makes you feel that it didn't work.
> > 
> > Regards,
> > Tobi
> 
> No it does not work for me.
> The last valueBox remains blank, actually it has a zero in it.
> The valueBox isn't updating it's value to the calculation, I can't
> seem to figure out why.
> 
> I added a print statement and it does print the result in the console
> but it's not rounding to 2 places, using 2 and 3 gives a result of
> 66.6699982.
> I double checked the name and it is the same as in the code, ValueBox1,
> as I did not rename it like I did with the others.
> 
> I am using: ValueBox1.Value = perAmnt & "%"
>  

Wait a minute. _My_ example definitely works but I have overseen that I,
by habit, picked a 'Float' instead of a 'Single' datatype for the floating
result. Changing in my working code this 'Float' to 'Single' gives me an
un-rounded floating point.

I also don't know how well Gambas already performs this automatic type
conversion in simple assignments as you do with
ValueBox.Value = fFloat & sStr (especially when assigning to Variant)
I guess, a Str$(fFloat) & sStr instead would not hurt, but I really have
no idea about these conversion magic within Gambas.

Regards,
Tobi




More information about the User mailing list