---
title: "Varför blir aldrig y = 1.0?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/java/129410-varför-blir-aldrig-y-1-0"
topic: "Java"
topic_url: "https://www.webforum.nu/amne/java"
author: "hema80"
published: "2005-06-03T20:20:38.000Z"
updated: "2005-07-08T11:57:28.000Z"
replies: 8
views: 559
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/129410-varför-blir-aldrig-y-1-0"
---

# Varför blir aldrig y = 1.0?

## #1 — hema80, 2005-06-03T20:20Z

Varför blir detta ett program som inte fungerar som det ska utan bara går i en evighet?

```

class skrivaUtDouble
{	
	public static void main (String[] args)
	{
		double y;
		
		for (y=0.1; y!=1.0; y=y+0.1)
		{
			System.out.println(y);
		}
	}

} // ----- Slut class skrivaUtDouble -----
```

 

Om y är 0.1 och det hela tiden läggs på 0.1 så kommer man ju så småningom till 0.9? Eller? Enligt min miniräknare gör man det i alla fall.

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

## #2 — pettsson, 2005-06-04T08:26Z

Jo, men som du ser när du kör programmet blir det inte exakt 1.0, utan det blir lite avrundingsfel, och då blir inte värdet 1.0, och då fortsätter programmet. Istället för y!=1.0 bör du använda y \<= 1.0.

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

## #3 — pimme, 2005-06-04T08:28Z

> **pettsson skrev:**
>
> Istället för y!=1.0 bör du använda y \<= 1.0.

Snarare y \< 1.0.

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

## #4 — pettsson, 2005-06-04T08:30Z

Hm, just det, han ville ju att y inte skulle vara 1. :r

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

## #5 — Sjodahl, 2005-07-08T11:06Z

> **pettsson skrev:**
>
> Jo, men som du ser när du kör programmet blir det inte exakt 1.0, utan det blir lite avrundingsfel, och då blir inte värdet 1.0, och då fortsätter programmet. Istället för y!=1.0 bör du använda y \<= 1.0.

Nu tappade jag bort mig lite.
Varför blir det inte exakt 1.0?? hur kan det bli avrundingsfel, vilka värden avrundas??

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

## #6 — pimme, 2005-07-08T11:38Z

> **Sjodahl skrev:**
>
> > **pettsson skrev:**
> >
> > Jo, men som du ser när du kör programmet blir det inte exakt 1.0, utan det blir lite avrundingsfel, och då blir inte värdet 1.0, och då fortsätter programmet. Istället för y!=1.0 bör du använda y \<= 1.0.
>
> 
> 
> Nu tappade jag bort mig lite.
> Varför blir det inte exakt 1.0?? hur kan det bli avrundingsfel, vilka värden avrundas??

Flyttal kan inte representeras exakt i datorn, utan approximeras med ett tal som är nära. Därför lagras inte 1.0 som 1 utan som 1.0000000001 (eller nåt sånt, exakt hur det lagras kan skilja från dator till dator).

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

## #7 — Sjodahl, 2005-07-08T11:50Z

så med andra ord kan man aldrig sätta ett exakt värde på en  double variabel?

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

## #8 — pimme, 2005-07-08T11:54Z

> **Sjodahl skrev:**
>
> så med andra ord kan man aldrig sätta ett exakt värde på en  double variabel?

Nej.
Eller, du kan ju sätta 

```
double i = 1.0
```

Det är dock inte säkert att i blir precis 1.0

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

## #9 — Sjodahl, 2005-07-08T11:57Z

nej det jag menar, tycker det verkar skumt helt enkelt ;) då borde det finnas något sådant där vågtecken ungeförlika med istället för likamed ;)

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

---

Tråden på webben: https://www.webforum.nu/amne/java/129410-varför-blir-aldrig-y-1-0
