I would suggest that you call Math.round() before casting, as to prevent undesirable effects: notice that in the example sent by ermina, 4.8 rounds down to 4 when cast to int, which could cause miscalculations depending on your use case.
The previous example would look something like this if we used Math.round():

Math.round(pctPosInit) $ int => int pctPosInitInt;
pctPosInitInt/100*myBuf.samples() => myBuf.pos;

Best regards!

On Tue, Jan 21, 2020 at 12:49 PM ermina <ermina@studioplume.com> wrote:
Hi,

to convert a float to an int,
you need to explicitly cast the value with
4.8 $ int => int foo;  // foo == 4
(as written here: https://chuck.cs.princeton.edu/doc/language/oper.html)

So you would do something like
pctPosInit $ int => int pctPosInitInt
pctPosInitInt/100*myBuf.samples() => myBuf.pos;

. e
On 01/21/2020 02:08 PM, Mícheál Ó Catháin wrote:
> Hi
> What is the best way to convert a float to int in the following please?
>
> //I want to set myBuf.pos to a percentage of myBuf.samples()...
> //Start playing at say 40% through the total number of samples.
>
> 40.0 => float pctPosInit;
> pctPosInit/100*myBuf.samples() => myBuf.pos;
>
>
> This throws the error argument types don't match.
> I'm not seeing how to convert the float to an int here.
> Thanks for your help!
>
> Micheal
>
>
> _______________________________________________
> chuck-users mailing list
> chuck-users@lists.cs.princeton.edu
> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
>
_______________________________________________
chuck-users mailing list
chuck-users@lists.cs.princeton.edu
https://lists.cs.princeton.edu/mailman/listinfo/chuck-users


--
Jean Menezes da Rocha