# Multiplikation int*float



## Hannes (17. Jul 2004)

Hallo!

Warum ergibt sich bei einer Multiplikation einer float-Zahl mit einer int-Zahl folgender Fehler:

10.1f * 50 = 505.00003

Es sollte aber 505.0 sein!!!

**********************************************

```
class Test{

   public static void main(String args[]){

        float f = 10.1f;
        int x =   50;
        float erg = f*x;

        System.out.println("10.1f*50 = "+erg);
   }
}
```
**********************************************


mfg
Hannes


----------



## Isaac (17. Jul 2004)

Weil 10.1 ein float ist

intern also also als 010001001011001001 (frei erfundene binäre Abfolge, representiert nicht wirklich 10,1) dagestellt wird. Wenn du diese Zahl nun multiplizierst kommt es duch die endliche Genauigkeit zu Rundungsfehlern. Das ist es, was du siehst.


----------



## akira (17. Jul 2004)

Statt float kannst Du auch den Datentypen double benutzen.
Der hat, wie der Namen schon sagt, eine doppelte Genauigkeit.


----------

