Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #16311

Re: floating point

From Lew <lewbloch@gmail.com>
Newsgroups comp.lang.java.programmer
Subject Re: floating point
Date 2012-07-24 13:21 -0700
Organization http://groups.google.com
Message-ID <fdecd225-042b-4aad-9cb3-b23fd669388e@googlegroups.com> (permalink)
References <d94d1dd0-deb5-4259-b5a0-fb3d57e99c55@googlegroups.com> <jumuu7$6np$1@dont-email.me>

Show all headers | View raw


markspace wrote:
> bob smith wrote:
>> I can never remember this.
>>
>> Let's say you have an integer and a float in an operation.  Is the result always a float?
> 
> 
> You can just try this to see what you get, or read the JLS.  From 

Excellent advice.

"Just trying it" could obscure some of the intermediate promotions.

> memory, I'm 90% sure that ints will be promoted to floats.  I'm not sure 
> how order of operations affects this.  In the expression (1+1)/2.0f, 
> does the addition use floats or ints?  I'm not sure, but I think ints.

From the JLS:

"The left-hand operand of a binary operator appears to be fully evaluated 
before any part of the right-hand operand is evaluated."

"The Java programming language respects the order of evaluation indicated 
explicitly by parentheses and implicitly by operator precedence."

So, yes, the parenthesized addition is done as an 'int' addition.

"5.6. Numeric Promotions

"Numeric promotion is applied to the operands of an arithmetic operator. 
Numeric promotion contexts allow the use of:

"    an identity conversion (§5.1.1)
"    a widening primitive conversion (§5.1.2)
"    an unboxing conversion (§5.1.8)

"Numeric promotions are used to convert the operands of a numeric 
operator to a common type so that an operation can be performed. 
The two kinds of numeric promotion are unary numeric promotion 
(§5.6.1) and binary numeric promotion (§5.6.2)."

So, by those sections you can see that the division must be evaluated 
as 'float'.

For those who decry the use of the JLS to learn this, just note that the 
relevant sections are not especially obscure and they answer the 
question completely and authoritatively. But feel free to struggle with 
alternatives if you really want to work harder.

<http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html>
<http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.7>
<http://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html#jls-5.6>
<http://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html#jls-5.6.2>

-- 
Lew

Back to comp.lang.java.programmer | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

floating point bob smith <bob@coolfone.comze.com> - 2012-07-24 12:57 -0700
  Re: floating point markspace <-@.> - 2012-07-24 13:01 -0700
    Re: floating point Lew <lewbloch@gmail.com> - 2012-07-24 13:21 -0700
      Re: floating point Gene Wirchenko <genew@ocis.net> - 2012-07-24 13:50 -0700
        Re: floating point Lew <noone@lewscanon.com> - 2012-07-25 06:33 -0700
          Re: floating point Gene Wirchenko <genew@ocis.net> - 2012-07-25 10:44 -0700
            Re: floating point Lew <lewbloch@gmail.com> - 2012-07-25 17:09 -0700
              Re: floating point Gene Wirchenko <genew@ocis.net> - 2012-07-25 17:42 -0700
                Re: floating point Jan Burse <janburse@fastmail.fm> - 2012-07-26 03:15 +0200
          Re: floating point Arne Vajhøj <arne@vajhoej.dk> - 2012-07-25 21:05 -0400
    Re: floating point Martin Gregorie <martin@address-in-sig.invalid> - 2012-07-24 20:34 +0000
  Re: floating point Patricia Shanahan <pats@acm.org> - 2012-07-24 13:29 -0700
    Re: floating point Jukka Lahtinen <jtfjdehf@hotmail.com.invalid> - 2012-07-25 12:22 +0300
      Re: floating point Arne Vajhøj <arne@vajhoej.dk> - 2012-07-25 10:54 -0400
      Re: floating point Roedy Green <see_website@mindprod.com.invalid> - 2012-07-25 13:29 -0700

csiph-web