(x: y) Operator in Julia

8

Ich versuche, diesen Code zu verstehen:

%Vor%
  

Ausgabe:

     

-3.0: 1.0: 6.0

Ich habe verstanden, warum ich -3 und 6 bekommen habe. Aber warum habe ich diesen Wert in der Mitte (1.0) ? Wie berechnet Julia es? Oder wie ich es googlen kann?

    
don-prog 21.10.2015, 10:27
quelle

3 Antworten

12

(first:step:last) Syntax repräsentiert einen Range Typ in Julia

%Vor%

Wenn Schrittteil weggelassen wird, wird standardmäßig 1

angenommen %Vor%

A Range ist eine kompakte Ansicht einer Serie

%Vor%

Es wird also erwartet, dass ein Range type und ein Vector denselben Regeln folgen, wenn Sie beispielsweise einen konstanten Wert hinzufügen:

%Vor%

oder sogar das Hinzufügen von zwei Vektoren gibt Ihnen das gleiche Ergebnis, wenn Sie ihre Bereichsdarstellung wie folgt hinzufügen:

%Vor%     
Reza Afzalan 21.10.2015, 10:59
quelle
3

Der Division-Operator in 4/1 gibt eine Float64 zurück. Obwohl der ursprüngliche Bereich eine Größe von 1 Int step Range ist, wird nach dem Hinzufügen eines Gleitkommas zu beiden Seiten ein Float64 Range. Als solche wird eine Schrittgröße von 1,0 durch Konvertieren der impliziten Ganzzahlschrittgröße erzeugt (Gleitkommazahlen sind ungleichmäßig verteilt, so dass ein einheitliches Stepping ein wenig schwierig ist - manchmal gibt es Rundungsprobleme).

    
Dan Getz 21.10.2015 11:40
quelle
2

Sie können dies sehen, wenn Sie float auf ein Intervall anwenden:

%Vor%

und diese Aktion ist erforderlich, bevor Sie Float64 4/1 ( 4.0 ) hinzufügen.

Wenn Sie einer Float-Zahl eine Ganzzahl hinzufügen, wird die Ganzzahl vor dem Addieren / Subtrahieren in einen Float-Wert umgewandelt:

%Vor%

Siehe die Aktionsregeln :

%Vor%

Sie können @which den Funktionsaufrufen bis zum Ende folgen, um zu verstehen, was passiert (bis zu das folgende ):

%Vor%

und daher promotion-addition von Int64 und Float64.

Hinweis im Master ist die Anzeige des Intervalls etwas weniger verwirrend / mehrdeutig:

%Vor%     
Andy Hayden 21.10.2015 21:04
quelle

Tags und Links