I can easily read 2e15
as "two quadrillion" at a glance, but for 2000000000000000
I have to count the zeroes, which takes longer and can lead to errors.
Why can't I declare an int
or long
using a literal such as 2e9
or 1.3e6
? I understand that a negative power of 10, such as 2e-3
, or a power of 10 that is less than the number of decimal places, such as 1.0003e3
, would produce a floating point number, but why doesn't Java allow such declarations, and simply truncate the floating-point part and issue a mild warning in cases where the resulting value is non-integral?
Is there a technical reason why this is a bad idea, or is this all about type-safety? Wouldn't it be trivial for the compiler to simply parse a statement like
long x = 2e12
as long x = 2000000000000 //OK for long
and int y = 2.1234e3
as int y = 2123.4 //warning: loss of precision
2.3e3 == 2300
can't be assigned without an explicit cast. Maybe the reason is simply what John Kugelman quoted. That would make sense. The reason I asked is just that I was curious if there was a technical reason why such a feature would be a bad idea. – Jeremiadint y = 2123.4
– Arber