From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.5-pre1 (2020-06-20) on ip-172-31-74-118.ec2.internal X-Spam-Level: X-Spam-Status: No, score=-1.9 required=3.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.5-pre1 Date: 22 Nov 91 14:06:49 GMT From: psinntp!vitro.com!v7.vitro.com!vaxs09@uunet.uu.net Subject: Re: Red-faced professor gets bitten in search for portability Message-ID: <1991Nov22.090650.28@v7.vitro.com> List-Id: In article <11919@spim.mips.COM>, murphy@mips.com (Mike Murphy) writes: > Why not just > check whether you indeed rounded down after doing the integer conversion? > For example: > FUNCTION Trunc (X: Float) RETURN Integer IS > itrunc : integer = integer(x - 0.5); > BEGIN > if x - float(itrunc) >= 1.0 then > -- rounded down, so add back a 1 > return itrunc+1; > else > return itrunc; > end if; > END Trunc; > I think this version focuses more clearly on the original problem. FUNCTION Trunc ( X : Float ) RETURN Integer IS i : integer := integer ( x ); if x < float(i) then return i - 1; else return i; endif; END Trunc;