Page 1 of 1

Calculation results differs with data types

Posted: Sat Oct 29, 2016 8:46 am
by Barbie
I wonder why these calculations give me different results:

Code: Select all

var() config byte RadarPosRatioX; // 0=left, 100=right
...
simulated function DrawRadar(canvas Canvas, ERDR_Position APosition, int RangeRadius) {
local int RadarCycleRadiusOuter;
local int OriginX, OriginY;
local float f;

	RadarCycleRadiusOuter = 123;
	RadarPosRatioX = 100;
	
	OriginX = (Canvas.SizeX - 2 * float(RadarCycleRadiusOuter)) / 100 * float(RadarPosRatioX) + float(RadarCycleRadiusOuter); // (1)
	f       = (Canvas.SizeX - 2 *       RadarCycleRadiusOuter)  / 100 *       RadarPosRatioX +        RadarCycleRadiusOuter;
OriginX is always (significant) smaller or equal to f although every operand of the right side of the assignment (1) is converted to float.

Re: Calculation results differs with data types

Posted: Sat Oct 29, 2016 4:16 pm
by Higor
Never operate with 'byte', conversion to and from float is mandatory.