Datentypen double - kommastellen abschneiden

Supra

Bekanntes Mitglied
Moin, ich habe schon im internet geguckt finde aber keine passende lösung. Ich brauche eine kommazahl zwischen 0 und 1, also 0.7 oder 0.5 etc.
Das mache ich so:
Java:
double zufallszahl = (double)((Math.random()*1) + 0);
jetzt kriege ich leider: 0.7347324723, wie kann ich das am besten auf eine stelle reduzieren und in eine variable speichern?
Wäre die klasse DecimalFormat, dafür gut geeignet?

Mit freundlichen Grüßen
 
Willst du runden oder abschneiden?
Abschneiden:
mal zehn, cast zu long, cast zu double, durch zehn.

Runden:
mal zehn, plus 0,5, cast zu long, cast zu double, durch zehn.
 
ah, abschneiden, huch wie sähe das dann aus? gibt es nicht was einfacheres? Also ich kriegs nicht hin..
 
Zuletzt bearbeitet:
Hey supra,

es hilft immer sich die einzelnen Schritte ausgeben zu lassen.
Meistens erkennt man dann ziemlich schnell seinen Fehler.
Insbesondere lasse dir mal "(long)Math.random() * 10"ausgeben 😉

grüße coco07!
 
Zuletzt bearbeitet:
Ähm ja, jetzt habe ich es xD,
habe ich gemacht.
System.out.println( (double)(long)(zufallszahl*10)/10 );
so funktioniert es, vielen dank.
 
Eigentlich alles falsch.

Wenn der TO eine Zufallszahl exakt aus der Menge
{ 0.0 , 0.1 , 0.2 , 0.3 , 0.4 , 0.5 , 0.6 , 0.7 , 0.8 , 0.9 , 1.0 }
benötigt, kann er sie nicht in einem double speichern, da dort evtl. statt 0.3 dann 0.2999999999999785 drinsteht.
Also:
Java:
double rnd = Math.random() ; // [0.0 ; 1.0[
double gleichwahrscheinlich_1 = rnd * 11.0 ; // [0.0 ; 11.0[
double gleichwahrscheinlich_2 = Math.floor( gleichwahrscheinlich_1 ); // [0.0 .. 10.0]
long zeroToTen = Math.round( gleichwahrscheinlich_2 ); // [0..10]
BigDecimal myValue = new BigDecimal( zeroToTen );
myValue.setScale( 1 ); // * 10^(-1)
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben