Ich habe einige for-Schleife, die einige Schwimmer lokale Variablen erfordern:Können wir garantieren, float mit == zu vergleichen ist sicher, wenn der Float nur Integer-Werte enthält?
float price=0;
float weight=0;
int[] amountArray={2,5,3};
for(int i=0;i<=10;i++){
int amount=0;
if(i<amountArray.length){
amount=amountArray[i];
}
//other codes for price and weight
}
ich den Preis und Gewicht wollen Schleife als lokale Variablen eingebettet in werden, damit ich die i von int zu schweben ändern:
int[] amountArray={2,5,3};
for(float i=0,price=0,weight=0;i<=10;i++){
int amount=0;
if(i<amountArray.length){
amount=amountArray[(int)i];
}
//other codes for price and weight
}
Funktioniert die modifizierte Version identisch mit der ursprünglichen Version? Da ich nur ganzzahligen Wert, der durch IEEE 754-Standard korrekt dargestellt werden kann, und es hängt nicht von jeder Hardware (vor allem in Android), so denke ich Vergleich Float mit <, < =, == und Casting zu Int sind nicht ein Problem in diesem Fall, bin ich richtig?
Genauigkeitsprobleme sind nicht nur ganzzahlig oder nicht ganzzahlig, sondern auch wichtig, wie groß die Ganzzahl wird. –
* "Ich möchte, dass der Preis und das Gewicht in for loop als lokale Variablen eingebettet werden" * Dieser Stil ist tatsächlich schlechter. Kompakter Code ist nur gut, wenn er nicht dicht ist. Eine Tonne Müll in dieselbe Zeile zu drücken, macht es nur schwer lesbar. Und der Teil, wo Sie 'i' werfen müssen, um auf das Array zuzugreifen, ist einfach schrecklich. Wirklich, mach es einfach so. – Radiodef
Erwägen Sie, "Preis" intern in Cent anstelle von Dollar zu berechnen. Auf diese Weise haben Sie überhaupt keinen Fließkommawert. Dann können Sie vor dem Ausdrucken des Endpreises "durch 100 teilen". – selbie