2017-01-08 1 views
0
print(String(Float(2 * (10/9)))) 

Warum wird mit diesem Code "2.0" gedruckt?
mit einem Taschenrechner, „2 * (10/9)“ würde gleich 2,222222 .....float maths equation funktioniert nicht wie erwartet

+0

@MartinR auf das Thema dieses verwandt ist, die ich vor einigen Wochen konfrontiert (ich gehe davon aus, dass du verzeihst ot darüber), welche Gleitkommazahlen als wissenschaftliche Notationen dargestellt werden? –

+0

@AhmadF: Sorry, ich weiß nicht, von welchem ​​Thema du sprichst. - Aber das hat nichts mit Fließkommazahlen oder wissenschaftlicher Notation zu tun. '10/9' ist eine Ganzzahl-Division und wird in Swift und in vielen anderen Programmiersprachen mit" 1 "bewertet. –

+0

@MartinR Vielen Dank für Ihre Antwort, mein Problem war, wie kann ich die Anzahl der Ziffern nach dem "." (auf der rechten Seite) in Fließkommawerten, du und Rob haben mir gesagt, dass es nicht möglich ist und -thankful- meine Frage als dupliziert markiert zu [dieser] (http://stackoverflow.com/questions/588004/is-floating- Punkt-Mathe-gebrochen). –

Antwort

4

Sie mit Integer-Zahlen sind die Berechnung und den Guss (integer) führen zu Float.

Sie Ihre Berechnung mit Floating-Point-Typen (Double) statt:

print(String(Float(2.0 * (10.0/9.0)))) 

Keine Notwendigkeit, obwohl würfe

print(2.0 * (10.0/9.0)) 
1

2,0 * (10,0/9,0) würde Dir das erwartete Ergebnis.

In Ihrem Fall Swift hat die ersten auf ganze Zahlen basieren Berechnungen (Ergebnis = 2), wandelt dann diese mit einem Schwimmer (Ergebnis = 2,0) und diese in einen String (Ergebnis = "2.0")

zu erhalten das richtige Ergebnis, sollte es lesen:

print(String(Float(2.0 * (10.0/9.0)))) 

Sie dann die beiden Typ Gespräche verlassen konnte:

print(2.0 * (10.0/9.0)) 
Verwandte Themen