I couldnt resist wading in here. Regarding Michael's original question the
Mint% routine should answer.Try this:

100 :
110 a = 330.7: b = 440.7
120 PRINT #0, Min_Int%(a, b), Mint%(a, b)
130 PAUSE -1
140 STOP
150 :
160 DEFine FuNction Min_Int%(x%,i)
170  IF x% < i : RETurn x% : ELSE : RETurn i
180 END DEFine
190 :
200 DEFine FuNction Mint%(x%, i)
210 LOCal a%
220 IF x% < b: a% = x%: ELSE : a% = i
230 RETurn a%
240 END DEFine Mint%
250 :

Dilwyn's solution is somewhat different in that a% = INT(a) <> a% = a, as
can be verified by running the routine below:

100 CLS: FOR i = 4 TO 5.1 STEP .1: PRINT Flint(i)! i
110 DEFine FuNction Flint(a%)
120 LOCal x%
130 x% = a%
140 IF INT(a%) = x%: RETurn 1
150 RETurn 0
160 END DEFine Flint
170 :

(But replacing the line 100 above with the line below, wheres the logic in
this:
100 CLS: FOR i% = 4 TO 5.1 STEP .1: PRINT Flint(i%)! i%
? Probably the result of hitting a RIRO design paradigm?)

Per

On 10 August 2017 at 18:22, Dilwyn Jones via Ql-Users <
ql-users@lists.q-v-d.com> wrote:

> The fact that the function name ends in % doesn't seem to make it an
> integer function (although the QL user guide says that "the type of data
> returned by the function is indicated by the type appended to the function
> identifier") any more than  parameter names have no type until they are
> set, so parameter x% could be float or integer, depending on what it is
> made when parameters are passed.
>
> As a workaround, add INT in line 160
>
> 160 IF INT(x%) < i : RETurn INT(x%) : ELSE return INT(i)
>
> Dilwyn
>
> -----Original Message----- From: Michael Bulford via Ql-Users
> Sent: Thursday, August 10, 2017 5:54 PM
> To: ql-users@lists.q-v-d.com ; ql-users-requ...@lists.q-v-d.com
> Subject: [Ql-Users] Function type error
>
>
> Hi all,
> I've no idea whether this has been mentioned before, but consider this …
> 100 :110 PRINT #0, Min_Int%(330.7, 440.7)120 PAUSE -1130 STOP140 :150
> DEFine FuNction Min_Int%(x%,i)160  IF x% < i : RETurn x% : ELSE : RETurn
> i170  END DEFine The correct result should be 331, sincethis is an integer
> function.On QPC2, SBASIC gives the result as 330.7QLiberator likewise also
> gives 330.7 Can anything be done? Michael
>
> _______________________________________________
> QL-Users Mailing List
>
> ---
> This email has been checked for viruses by AVG.
> http://www.avg.com
> _______________________________________________
> QL-Users Mailing List
_______________________________________________
QL-Users Mailing List

Reply via email to