I am trying to get a floating variable accurate to just 3 decimal points for a comparison calculation. I am trying the method below, but it doesn\'t work. I can\'t see why not,
When you perform
fbb = bb/1000;
It treats operation as int/int
and returns an int
Try
fbb = ((double)bb)/1000.000;
It will be treated as (double)/(double)
and return a double
.
When you perform
fbb = bb/1000;
It treats operation as int/int and returns an int. its demotion of value.
Also take long bb;
instead of int as int has value 32767 as its high value.
Try
fbb = bb/1000.000;
or
fbb = (double)bb/1000;
bb
is int. So bb/1000
is doing a int division, which results again in an int = 1000 (no decimals). That int value is cast to a double.
bb
is an int
, so bb / 1000
will follow the integer division. Change either or both operand to a double
. The simplest way is:
fbb = bb / 1000.0; //type of 1000.0 is double
or
fbb = (double)bb / 1000
Use
fbb=(double)bb/1000;
bb is integer and result is integer, and then converted to double