The following code snippet gave me compiler error at Line 1.
public abstract class xyz
{
float Gamma = 20.0; //Line 1
public class Alpha
{
v
should be
float density = 20.0f;
As per my understanding, float is used for decimal variables.
No. Numerical literals with fraction parts are treated as doubles by default.
float density = 20.0f;
If you try to assign a decimal number you must place an "f" at the end, otherwise Java will assume you are trying to assign a double .A double would more precisely cover more numbers that you could type in.
In Java by default decimal values are stored as double. But for storing it as a floating point number we explicitly need to declare, like
float varName = 10.0f; or float varName = (float)10.0;
Floating-point literals are considered double
s unless you specify that they're just float
s. (Similarly, integer literals are int
s unless specified otherwise.) Append the letter f
to the number to make it a float
:
float density = 20.0f;
The JLS has comprehensive typing rules for literal values. No, you don't have to make the literal a float
with f
, but then you have to cast it with (float)
if you want to fit it in a float
variable, since Java won't automatically try to shove a number of one type into a variable with a smaller range.
Per the JLS, §3.10.2, all floating point literals are interepreted as double
unless specified as a float
.
A floating-point literal is of type float if it is suffixed with an ASCII letter F or f; otherwise its type is double and it can optionally be suffixed with an ASCII letter D or d (§4.2.3).
Change your declaration to:
float density = 20.0f;
In general, consider why you're using float
- it has less precision than double
, and isn't used nearly as often.