---
title: "Inte en siffra stämmer"
type: "forum-thread"
url: "https://www.webforum.nu/amne/java/96371-inte-en-siffra-stämmer"
topic: "Java"
topic_url: "https://www.webforum.nu/amne/java"
author: "farsta_online"
published: "2004-02-02T19:42:02.000Z"
updated: "2004-02-03T17:57:12.000Z"
replies: 4
views: 232
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/96371-inte-en-siffra-stämmer"
---

# Inte en siffra stämmer

## #1 — farsta_online, 2004-02-02T19:42Z

från Hortons bok:

> programmet tar reda på om det tecken som är lagrat i variabeln symbol är en versal mellan A och Z, en gemen mellan a & z  eller ngt annat tecken

 
Följande kod

```
public class BokstavsKontroll {

	public static void main(String[] args)
	{
		char symbol = 'A';
		symbol = (char)(128.0*Math.random()); //Skapa ett slumptecken
		
		if (symbol >= 'A') //Ärdet A eller högre?
		{
			if (symbol <= 'Z')  //ja, är det Z eller högre?
			// Då är det en versal
			System.out.println("Du har versalen " + symbol + " = " + 128*Math.random());
		else
		    if (symbol >= 'a')
               if (symbol <= 'z')
               //då är det en gemen
               System.out.println("Du har gemen " + symbol + " = " + 128*Math.random());
          else
              System.out.println("Koden är högre än a och inte en bokstav ");
           else
		   System.out.println("Koden är lägre än a och inte en bokstav ");
		}
		else
		   System.out.println("Koden är lägre än A och inte en bokstav ");
            
               
               		}
	}
```

 
Nog för att den slumbar ut tal och och skriver om de är versaler eller inte,men som ni ser stämmer inte siffrorna med "min" ASCII-kod - iaf inte den ver som finns i boken...
tex har jag fått

> Du har versalen A = 47.604539773413734

  medan enligt tabellen skulle A = 065

Tack för ordet
/Peter

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

## #2 — jabbalizer, 2004-02-02T20:24Z

symbol = (char)(128.0\*Math.random()); //Skapa ett slumptecken

Här får du en slumpmässig char, va?

Men när du skriver ut sen:

("Du har versalen " + symbol + " = " + 128\*Math.random());

slumpar du inte ett nytt värde då med 128\*Math.random()???

spara undan 128\*Math.random() i en int-variabel eller nåt
int taletISiffror = (int)(128\*Math.random());

och gör sen:
symbol = (char)taletISiffror;

och skriv slutligen ut :
("Du har versalen " + symbol + " = " + taletISiffror);

i stället för 

("Du har versalen " + symbol + " = " + 128\*Math.random());

Jag är ingen expert, men detta borde väl funka?

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

## #3 — jabbalizer, 2004-02-02T20:33Z

Hoppas bara att (char)talet == (char)((int)talet)

alltså att man inte försämrar precisionen genom att först casta till int, och sen casta till char.... Man kan kanske anta att char precis som int klipper bort decimalerna... och då är det inget problem.. men om char t.ex avrundar uppåt eller till närmsta heltal kan det bli problem.

För att va på den  säkra sidan kan man ju casta talet till en double eller float i stället för int... då kan du ju dessutom skriva ut med alla decimalerna...

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

## #4 — spango, 2004-02-03T13:50Z

char och int bör trunkerar på samma vis, dvs klipper bort decimalerna. Ingen fara på taket där.

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

## #5 — farsta_online, 2004-02-03T17:57Z

Tack för svaret!

> **jabbalizer skrev:**
>
> spara undan 128\*Math.random() i en int-variabel eller nåt
> int taletISiffror = (int)(128\*Math.random());
> och gör sen:
> symbol = (char)taletISiffror;
> och skriv slutligen ut :
> ("Du har versalen " + symbol + " = " + taletISiffror);
> Jag är ingen expert, men detta borde väl funka?

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

---

Tråden på webben: https://www.webforum.nu/amne/java/96371-inte-en-siffra-stämmer
