Arc4random float?

8

Tun Sie dies:

%Vor%

liefert ein anständiges Ergebnis einer Zahl zwischen 0 und 100.

Aber mach das:

%Vor%

Gibt 0. Wie kann ich einen Gleitkommawert zurückgeben?

    
Andrew 31.05.2011, 21:59
quelle

4 Antworten

24

Sie machen einfach eine Ganzzahldivision statt einer Gleitkommadivision, so dass Sie nur ein abgeschnittenes Ergebnis erhalten (z. B. wird .123 auf 0 gekürzt). Probieren Sie

aus %Vor%     
bensnider 31.05.2011, 22:03
quelle
4

Sie teilen ein int mit einem int, was ein int ergibt. Sie müssen entweder in einen Float-Modus umwandeln:

%Vor%

Siehe auch meinen Kommentar zum Modulo-Operator.

    
user142019 31.05.2011 22:04
quelle
1

Um eine Float-Division anstelle einer ganzzahligen Division zu erhalten:

%Vor%

Aber Vorsicht: Wenn Sie % 100 verwenden, erhalten Sie nur einen Wert zwischen 0 und 99. Durch die Division durch 100.f wird nur ein zufälliger Wert zwischen 0.00f und 0.99f erzeugt.

Besser, um eine zufällige Gleitkommazahl zwischen 0 und 1 zu erhalten:

%Vor%

Noch besser, um Modul-Bias zu vermeiden:

%Vor%

Am besten, um Präzisionsfehler zu vermeiden:

%Vor%

Ich glaube an Swift wäre es:

%Vor%     
Cœur 13.01.2016 11:20
quelle
0

In Swift:

%Vor%     
NatashaTheRobot 12.12.2014 11:33
quelle

Tags und Links