float f = 0.00f;
System.out.println(f);
gives the output:
0.00
I’d like to format a number represented by a percentage to 2 decimal places. But the result should be a float and not a string.
e.g.
10.001 needs to be converted to 10.00
0.0 needs to be converted to 0.00
78.8 needs to be converted to 78.80
The values thus formatted will be assigned to a float.. how would one accomplish this?
In the general case, you can’t do that. There’s no guarantee that a particular decimal value can be represented by a float that has only two digits right of the decimal.
A float is the wrong data type for this kind of precision. You need to use a decimal type or a scaled integer instead.
Assignment works the same way. If you assign the value 133.47 to a floating-point variable, your environment will assign the closest valid floating-point number to the variable. The closest valid floating-point number will probably not be 133.47.
You can compile and execute this program in C.
It prints these values on my system
Formatting to two decimal places changed the way ‘r’ looks, but it didn’t change its value. Your system will do floating-point arithmetic based on the actual value, not the formatted value. (Unless you also change the data type.)