Home Forum Community Jumps in measured data Reply To: Jumps in measured data

#5475
Robert
Participant

Thank you for sharing. I’ve put the code in a little test program:


uint16_t double2int(double val)
{
	int8_t   sintp = (int8_t)val;                     /* signed integer part */
	int8_t   sdecp = (val - sintp) * 100;             /* signed decimal part */
	uint8_t  udecp = (sdecp > 0) ? sdecp : -sdecp;    /* removed decimal sign */
	uint8_t  uintp = sintp + 127;                     /* convert to unsigned */
	uint16_t res   = (udecp << 8) | (uint16_t)uintp;  /* pack it together */

	return res;
}

int main(int argc, char *argv[])
{
	double  value;

	for (value = -2.0; value < 2.01; value += 0.1) {
		uint16_t  converted = double2int(value);
		printf("value = %f, converted = %u\n", value, converted);
	}
}
                                                                                                                                                                                                                                                   

And I’m getting the following result:


value = -2.000000, converted = 125
value = -1.900000, converted = 22910
value = -1.800000, converted = 20350
value = -1.700000, converted = 17790
value = -1.600000, converted = 15230
value = -1.500000, converted = 12670
value = -1.400000, converted = 10110
value = -1.300000, converted = 7550
value = -1.200000, converted = 4990
value = -1.100000, converted = 2430
value = -1.000000, converted = 25471
value = -0.900000, converted = 22911
value = -0.800000, converted = 20351
value = -0.700000, converted = 17791
value = -0.600000, converted = 15231
value = -0.500000, converted = 12671
value = -0.400000, converted = 10111
value = -0.300000, converted = 7551
value = -0.200000, converted = 4991
value = -0.100000, converted = 2431
value = 0.000000, converted = 127
value = 0.100000, converted = 2687
value = 0.200000, converted = 5247
value = 0.300000, converted = 7807
value = 0.400000, converted = 10367
value = 0.500000, converted = 12927
value = 0.600000, converted = 15487
value = 0.700000, converted = 18047
value = 0.800000, converted = 20607
value = 0.900000, converted = 23167
value = 1.000000, converted = 128
value = 1.100000, converted = 2688
value = 1.200000, converted = 5248
value = 1.300000, converted = 7808
value = 1.400000, converted = 10368
value = 1.500000, converted = 12928
value = 1.600000, converted = 15488
value = 1.700000, converted = 18048
value = 1.800000, converted = 20608
value = 1.900000, converted = 23168
value = 2.000000, converted = 129

Though I’m not really sure what I’m looking at. Can you tell me what goes in and what’s supposed to come out? Is the output supposed to be a fixed-point value?