---
title: "Problem med float"
type: "forum-thread"
url: "https://www.webforum.nu/amne/java/145266-problem-med-float"
topic: "Java"
topic_url: "https://www.webforum.nu/amne/java"
author: "JulleBoy"
published: "2006-04-09T13:01:54.000Z"
updated: "2006-04-12T14:33:52.000Z"
replies: 2
views: 367
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/java/145266-problem-med-float"
---

# Problem med float

## #1 — JulleBoy, 2006-04-09T13:01Z

Felmeddelande:
*possible loss of precision
found: double
required: float*

```
this.vikt = vikt + liter * 0.8;
```

 

Det blir fel vid "\*", både vikt och liter är av typen float så varför blir det fel?

Permalänk: https://www.webforum.nu/p/145266

## #2 — JulleBoy, 2006-04-09T13:56Z

Det löste man genom följande:

```
this.vikt = (float) vikt + liter * 0.8;
```

Permalänk: https://www.webforum.nu/p/1795151

## #3 — Lime, 2006-04-12T14:33Z

> **JulleBoy skrev:**
>
> Felmeddelande:
> *possible loss of precision
> found: double
> required: float*
> 
>
>
> ```
> this.vikt = vikt + liter * 0.8;
> ```
>
>  
> 
> Det blir fel vid "\*", både vikt och liter är av typen float så varför blir det fel?

För att svara på din fråga:

Antar att du har deklarerat någåt sånthär

float vikt;

setVikt(float vikt, float liter)
{

this.vikt = vikt + liter\* 0.8;
}

Som du säger så är vikt och liter deklarerat som float MEN inte 0.8.

0\.8 som du har skrivit det är en double eftersom det är grundatomären för decimaltal i java.

Du borde skriva this.vikt = vikt + liter \* 0.8f;

Notera det lilla f:et jag skrivit efter 0.8. Det markerar att talet skall betraktas som en float. Om du använder dig av din lösning blir det fel eftersom liter först  downcastas till en double och sedan konverteras till en float.

Permalänk: https://www.webforum.nu/p/1796287

---

Tråden på webben: https://www.webforum.nu/amne/java/145266-problem-med-float
