Ethereal-dev: [Ethereal-dev] FT_DOUBLE vs. FT_FLOAT and floating point precision

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: Ulf Lamping <ulf.lamping@xxxxxx>
Date: Fri, 23 Aug 2002 21:54:56 +0200
Hi List!

Is there any reason that there is no FT_FLOAT in proto.c (and other files)?

Currently only FT_DOUBLE is available. This will be displayed with the default precision
for floating points, which is 6 in ANSI-C. 

found in proto.c, line 2301:
snprintf(label_str, ITEM_LABEL_LENGTH, "%s: %g", hfinfo->name, fvalue_get_floating(fi->value));

This will display a maximum of 6 digits, significant digits behind this will be truncated.

Example display of a float:
OK    -> Value: 1 Display: 1 
OK    -> Value: 1,23456 Display: 1,23456
Wrong -> Value: 123456,123 Display: 123456

For a double, this is of course even worse, as there are more significant digits.


After digging for a while, 
I found the following precisions for floating points to display the whole information of the types:

default of printf %g: 6 (cutting some information).
double precision: .14 (for printf %g)
float  precision: .9  (for printf %g)

If we display both float and double types with the same formatting string (using always a precision of 14), 
we would displaying the float value appended by some garbage:

Value: 123456,123
Display: 123456,12389898


To fix the whole thing, we should seperate the double and float output (by adding the type FT_FLOAT),
and using the appropriate formatting strings.


In proto.c this would look like:

FT_DOUBLE:
snprintf(label_str, ITEM_LABEL_LENGTH, "%s: %.14g", hfinfo->name, fvalue_get_floating(fi->value));

FT_FLOAT:
snprintf(label_str, ITEM_LABEL_LENGTH, "%s: %.9g", hfinfo->name, fvalue_get_floating(fi->value));

This seems to be only a matter of display representation, the data itself can be stored in a double variable.


Is there any special reason (that I don't see), not to do this?

Regards ULFL

______________________________________________________________________________
WEB.DE MyPage - Ohne Computerkenntnisse in nur 5 Minuten online! Alles
inklusive! Kinderleicht!  http://www.das.ist.aber.ne.lustige.sache.ms/