Jump to content
Unity Insider Forum
cncrete

Frage zu double und float

Recommended Posts

Hallöchen, 

Ich bin ein Anfänger und mache mein erstes Pong spiel.

Nun wollte ich das bei jeder Kollision die Geschwindigkeit des Balles vergrössert wird. Also habe ich den float speed = speed +0.1 gesetzt. Da kam die Fehlermeldung. Float kann nicht explizit in double umgewandelt werden. Als ich dann den float in einen double umgewandelt habe gab es immer noch probleme(und auch im restlichen code).

Dann habe ich einfach geschrieben

speed = speed +(1/10)

Und es funktionierte.

Kann mir das bitte einer erklären. Ich versteh es einfach nicht, es ist doch das gleiche???

 

Schonmal danke für alle Antworten

Share this post


Link to post
Share on other sites

float und double sind ähnliche Typen. Beides sind Gleitkommazahlen. float allerdings wird im Speicher mit 32 bits dargestellt, double hat - wer hätt's gedacht - 64 bits. Damit sind sowohl größere, als auch genauere kleine Zahlen darstellbar. Braucht man aber für Spiele in der Regel nicht.

Wenn man eine Kommazahl aufschreibt, muss diese ja einem dieser beiden Typen entsprechen. Mal davon abgesehen, dass er noch mehr geben kann. Und für C# ist eben definiert, dass ein Kommazahl-Literal ein double ist und kein float. Um ein Literal zu schreiben, das stattdessen ein float ist, musst du am Ende ein f anfügen:

speed = speed + 0.1f;
// bzw
speed += 0.1f;

Dein anderer Versuch funktioniert übrigens nicht - er kompiliert zwar, aber 1/10 = 0.

Wenn du ein Zahlliteral schreibst, das kein Komma hat, dann handelt es sich um ein int, also eine Ganzzahl. Und eine int-Division ergibt immer wiederum ein int. Sollte die Division eigentlich ein Ergebnis mit Nachkommastellen haben (also 0.1), werden diese abgeschnitten (also 0), was einem Abrunden entspricht. Du rechnest also immer 0 obendrauf, was den Compiler nicht stört, aber dir nichts bringt.

  • Thanks 2

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×