Wie erzeugt man in Java eigentlich Stützstellen? Also bei einem gegebenen Intervall [Anfang, Ende] eine Zahlenfolgen in der Form Anfang:Schrittweite:Ende erstellen. In Matlab/GNU Octave geht das ja bekanntlich mit den Funktionen linspace oder colon. Hab bis jetzt nur das hier gefunden. Ist das eine gute Lösung? Gibt es in Java keine vorgefertigte Methode? In MINT-Fächern braucht man sowas eigentlich relativ oft... ???:L
publicclassTest3{publicstaticvoidmain(String[] args){double start =0.0;double end =1.0;double increment =0.1;int numberOfSteps =(int)Math.round((end-start)/increment)+1;System.out.println(numberOfSteps);double[] samplingPoints =newdouble[numberOfSteps];for(int i =0; i < numberOfSteps; i++){System.out.println("Count is: "+ i);
samplingPoints[i]=Math.round(start *100)/100.0;System.out.println(samplingPoints[i]);
start = start + increment;}}}
Wäre das grundsätzlich ok so in Java? Ein Fragen hab ich noch zum Lösungsvorschlag von arilou: Ist es in Java empfehlenswert in Schleifen double Zählvariablen zu verwenden? Oder sollte man nicht besser int verwenden? Und wie ist das mit dem Runden?
Java:
samplingPoints[i]=Math.round(start *100)/100.0;
Das macht man so in Java? Hab ich von hier. Es gibt keine interne Methode, die auf beliebige Nachkommastellen rundet?
Warum willst du denn an der Stelle überhaupt runden? Damit verlierst du doch nur an Genauigkeit, aber gewinnst nichts dabei. Für die Ausgabe kannst du immer noch die Ausgabe selbst formatieren, aber intern immer noch mit den exakten Werten rechnen.
Zur Berechnung selbst. Das ist im Grund schon ok so. Du solltest du beachten, dass du bei zu vielen Dezimal-Stellen, auf die du Runden willst, oder aber bei zu großen Werten für start oder end ganz schön auf die Nase fallen kannst.
Ist voll und ganz legitim. Und man spart sich dein "Stützstellen Erzeugen", denn was machst du mit den Stützstellen? An jeder einen Funktionswert berechnen (o.ä.). Dann kann ich diese Berechnung auch gleich in den Schleifenrumpf packen, fertig.
Ich weis nicht, wie gut Java for-Schleifen beim Compilieren entrollen kann, die einen Gleitkomma-Zähler haben. Möglich dass hier 'int' von Vorteil wäre.
Gleitkommazahlen sind immer von eingeschränkter Genauigkeit.
Frage ist immer "wie ungenau?", also wieviele signifikanten Stellen ("geltende Ziffern") habe/will ich.
Wenn du eine Ausgabe mit 4 geltenden Ziffern willst, und nutzt intern 'double's...
Das mit der Genauigkeit schau ich mir bei Gelegenheit noch einmal an. Ich werde mal mit der ersten Lösung (Zählvariable int) weitermachen. Danke noch einmal an alle!