Negative float Werte?

abc66

Top Contributor
Weiß jemand, wieso
Java:
float f = (float) b.getRGB(j, i) / (float) 0xFFFFFF;
immer negative Werte liefert? Die Werte sollen zwischen 0 und 1 sein
 

LimDul

Top Contributor
Kleiner Tipp: Bennen deine Variablen mal vernünftig, dann muss man nicht nachfragen. Ein Buchstabige Variablen sind eigentlich ein No-Go außer für Schleifenzähle oder sowas wie x/y Koordinaten.

Zwei Probleme: a) Der Alphakanal kommt mit
b) Es wird nicht als int geliefert, sondern als Binarzahl - die nach Int konvertiert wird. Und da der int signed ist, aber ggf. alle Bits verwendet wird (spätestens mit Alphakanal) können auch negative Zahlen rauskommen.
 

LimDul

Top Contributor
@LimDul sorry wenn du kein Java kannst.
Das hat damit nix zu tun.

This is a problem with single-letter variable names. Certainly a loop counter may be
named i or j or k (though never l!) if its scope is very small and no other names can conflict
with it. This is because those single-letter names for loop counters are traditional.
However, in most other contexts a single-letter name is a poor choice; it’s just a place
holder that the reader must mentally map to the actual concept. There can be no worse reason
for using the name c than because a and b were already taken.
In general programmers are pretty smart people. Smart people sometimes like to show
off their smarts by demonstrating their mental juggling abilities. After all, if you can reliably
remember that r is the lower-cased version of the url with the host and scheme
removed, then you must clearly be very smart.
One difference between a smart programmer and a professional programmer is that
the professional understands that clarity is king. Professionals use their powers for good
and write code that others can understand.

Darfst gerne mal suchen, wo das Zitat her stammt :)
 

abc66

Top Contributor
and write code that others can understand
Man kann keinen Code schreiben, den alle verstehen können. Das würde voraussetzen, dass es keine dummen Menschen gibt.

Mein Oma würde zum Beispiel b.getRGB(j, i); auch nicht dann verstehen, wenn dort bufferedImage.getRGB(j, i); stünde.

Hingegen kann man mit etwas Erfahrung kürzere Variablennamen schneller lesen; das ist einfach die logische Konklusion, da diese kürzer sind, also weniger Buchstaben beinhalten...

So und jetzt nochmal zur Frage zurück... Wie tilge ich den Alphakanal-Wert?
 

mrBrown

Super-Moderator
Mitarbeiter
Das würde voraussetzen, dass es keine dummen Menschen gibt.
"dumme Menschen", die zB das Javadoc zu benutzen Funktionen nicht lesen oder nicht verstehen? ;)

Mein Oma würde zum Beispiel b.getRGB(j, i); auch nicht dann verstehen, wenn dort bufferedImage.getRGB(j, i); stünde.
Wenn deine Oma Englisch-Sprachig ist und die Domäne kennt, versteht sie "imageWithBird.getRGB(x, y)" sicherlich besser als "b.getRGB(j, i)".

Vielleicht zählst du deine Oma aber auch zu "dummen Menschen" und traust ihr nichts zu.

Hingegen kann man mit etwas Erfahrung kürzere Variablennamen schneller lesen; das ist einfach die logische Konklusion, da diese kürzer sind, also weniger Buchstaben beinhalten...
Ja, "b" kann man schneller lesen als "bufferedImage", schneller verstehen aber nicht.

Den meisten Menschen ist verstehen wichtiger als schnelles lesen.

So und jetzt nochmal zur Frage zurück... Wie tilge ich den Alphakanal-Wert?
argb & 0x00FFFFFF, sinnvoller ist aber vermutlich anderes, kommt drauf an was du machen möchtest.
 
Zuletzt bearbeitet:

abc66

Top Contributor
Ergibt noch keinen Sinn. Wenn ich den Alphakanalwert tilge und durch 0xffffff teile, erhalte ich Werte zwischen 1.0 und 0.9...

Hier mit:
Code:
	static float getFloatColor(int rgb) {
		// int alpha = (rgb >> 24) & 0xff;
		int red = (rgb >> 16) & 0xff;
		int green = (rgb >> 8) & 0xff;
		int blue = (rgb >> 0) & 0xff;
		float[] f = new float[3];
		Color.RGBtoHSB(red, green, blue, f);
		return f[0];
	}
erhalte ich Werte zwischen 0.0 und 0.09...

In beiden Fällen liegen alle float Werte also nah beieinander.

kommt drauf an was du machen möchtest
Für einen Bildpunkt einen hash (zwischen 0 und 1) erstellen, wobei Schwarz und Weiß möglichst unterschiedliche hashes ergeben sollen.
 

abc66

Top Contributor
Also vorerst mal so...
Java:
	static float getFloatColor(int rgb) {
		// int alpha = (rgb >> 24) & 0xff;
		int r = (rgb >> 16) & 0xff;
		int g = (rgb >> 8) & 0xff;
		int b = (rgb >> 0) & 0xff;

		// Normalize and gamma correct:
		double rr = Math.pow(r / 255.0, 2.2);
		double gg = Math.pow(g / 255.0, 2.2);
		double bb = Math.pow(b / 255.0, 2.2);

		// Calculate luminance:
		double lum = 0.2126 * rr + 0.7152 * gg + 0.0722 * bb;

		// Gamma compand and rescale to byte range:
		float grayLevel = (float) Math.pow(lum, 1.0 / 2.2);

		return grayLevel;
	}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Edit Text Negative Decimalzahlen Java Basics - Anfänger-Themen 18
M negative Zahlen bei Intervallen Java Basics - Anfänger-Themen 10
C Positive und negative Zahlen mit Regex extrahieren Java Basics - Anfänger-Themen 8
F Negative Zahl erzwingen Java Basics - Anfänger-Themen 3
D auch negative Zahlen sotieren Java Basics - Anfänger-Themen 18
J jOptionPane, Array und negative Zahlen Java Basics - Anfänger-Themen 2
G Warum funktioniert das Programm für negative Eingabe nicht? Java Basics - Anfänger-Themen 3
J Erste Schritte Scanner negative zahl einlesen und verwenden. Java Basics - Anfänger-Themen 6
D Datentypen 2 d array erweitern und ins negative gehen. Java Basics - Anfänger-Themen 9
S Negative Zahlen auffüllen Java Basics - Anfänger-Themen 5
C Erste Schritte Negative Zahlen als Fakultät ablehnen Java Basics - Anfänger-Themen 2
C Rekursion auf einem Array(negative werte addieren) Java Basics - Anfänger-Themen 4
B Input/Output Positive und negative Zahlen ausgeben Java Basics - Anfänger-Themen 27
H Datentypen TreeMap<Double, Object> - negative Werte? Java Basics - Anfänger-Themen 4
J Summe postive Zahlen und negative Zahlen Java Basics - Anfänger-Themen 12
dummy2 Negative Höhe / Breite bei Figuren Java Basics - Anfänger-Themen 2
P Negative Null - geht das? Java Basics - Anfänger-Themen 24
L Gelöst: Negative Eingaben sollen verweigert werden Java Basics - Anfänger-Themen 3
E Negative Abfrage auf instanceof Java Basics - Anfänger-Themen 3
M Negative Werte abfangen Java Basics - Anfänger-Themen 18
W Double or Float zusammenrechnen Java Basics - Anfänger-Themen 15
T float soll durch schleife die größte mögliche Zahl herausfinden, Ausgabe ist aber "Infinity" Java Basics - Anfänger-Themen 1
H Cast von Float nach String klappt nicht Java Basics - Anfänger-Themen 12
ms_cikar Bin to Float convertieren funktioniert nicht Java Basics - Anfänger-Themen 24
S Fragen zu Ausgabe double und float Java Basics - Anfänger-Themen 3
B String to Float Java Basics - Anfänger-Themen 27
J Float Frage Java Basics - Anfänger-Themen 1
K Überprüfen ob Eingabe ein Float ist Java Basics - Anfänger-Themen 4
V Variablen Genauigkeit von float Java Basics - Anfänger-Themen 3
M Datentypen Byte, Float und Boolean Java Basics - Anfänger-Themen 13
MiMa String nach float Konvertieren Java Basics - Anfänger-Themen 23
S Math.ceil für float Java Basics - Anfänger-Themen 1
T Kann erbende Klasse Attribute der vererbenden Klasse anpassen (int -> float)? Java Basics - Anfänger-Themen 9
J Array zu float Java Basics - Anfänger-Themen 6
I Datentypen float-Grenzen (?) Java Basics - Anfänger-Themen 21
X Einfache Frage; wie soll ich die spezielle float var speichern? Java Basics - Anfänger-Themen 2
C Erste Schritte Eingabe mit Float Java Basics - Anfänger-Themen 1
K Erste Schritte switch - Warum sind long/float/double/... nicht erlaubt? Java Basics - Anfänger-Themen 5
M Datentypen Integer und Float Konflikt Java Basics - Anfänger-Themen 3
N Mehrdimensionales float Array aus .txt-Datei einlesen? Java Basics - Anfänger-Themen 17
V Datentypen Position mit Int und Float berechen und ausgeben Java Basics - Anfänger-Themen 5
G double in float umwandeln Java Basics - Anfänger-Themen 2
B Datentypen Test float und double speichern Zahlen nur ungefähr Java Basics - Anfänger-Themen 4
P Variablen 2D float unterteilen Java Basics - Anfänger-Themen 3
W Variablen float rundet beim Bruch rechnen Java Basics - Anfänger-Themen 3
M Erste Schritte float-Array auslesen Java Basics - Anfänger-Themen 4
S byte to float Java Basics - Anfänger-Themen 4
K Datentypen Wertebereich float/double - Warum nicht hoch -1 Java Basics - Anfänger-Themen 6
J Falsche Darstellung von Float Java Basics - Anfänger-Themen 2
1 float Array deklarieren Java Basics - Anfänger-Themen 10
T Operatoren Float in byte umwandeln Java Basics - Anfänger-Themen 3
N Methoden String to Float Java Basics - Anfänger-Themen 3
G Queue mit int oder float Java Basics - Anfänger-Themen 3
Luk10 Unpräzise float-Werte Java Basics - Anfänger-Themen 10
U Nachbarzahl einer Float Java Basics - Anfänger-Themen 4
R Float Wertebereich Java Basics - Anfänger-Themen 3
V Double schneller als Float? Java Basics - Anfänger-Themen 13
T float[] in float Fehler Java Basics - Anfänger-Themen 6
P Einem Double-Objekt einen float-Wert zuweisen Java Basics - Anfänger-Themen 2
B Datentypen Float ohne .0 ausgeben, sonstige Nachkommastellen aber erhalten Java Basics - Anfänger-Themen 4
K aus String mach Float funktioniert nicht warum? Java Basics - Anfänger-Themen 7
C Probleme mit float und int Java Basics - Anfänger-Themen 3
O 64bit- OS byte, short, int oder long bzw. float oder double? Java Basics - Anfänger-Themen 13
M String Datei in Float-Matrix umwandeln Java Basics - Anfänger-Themen 8
M float/double Anzahl Nachkommastellen ermitteln Java Basics - Anfänger-Themen 18
K float to String Java Basics - Anfänger-Themen 11
T Fehler beim Konvertieren (String --> Float) Java Basics - Anfänger-Themen 5
C Falsches Ergebnis float-Addition Java Basics - Anfänger-Themen 10
N Datentypen Warum Compilerfehler bei float f = 4.0; Java Basics - Anfänger-Themen 2
X Float ausgeben Java Basics - Anfänger-Themen 3
B Datentypen char, int, float in String Variable speichern Java Basics - Anfänger-Themen 4
M Float und double Java Basics - Anfänger-Themen 11
S Datentypen float statt void Java Basics - Anfänger-Themen 3
J String => Float Problem Java Basics - Anfänger-Themen 10
C Datentypen Float und Double Java Basics - Anfänger-Themen 2
M Float auf bestimmte Nachkommazahl runden Java Basics - Anfänger-Themen 3
D Datentypen Parse float[] to int[] Java Basics - Anfänger-Themen 4
S Long und Float Frage Java Basics - Anfänger-Themen 2
lenniii float[] Java Basics - Anfänger-Themen 2
S casten array in int von float Java Basics - Anfänger-Themen 5
P float Eingabe wird nicht akzeptiert, obwohl Variable als float deklariert Java Basics - Anfänger-Themen 2
M Vergleich Float-, Doublewert Java Basics - Anfänger-Themen 10
F Array in double/float Java Basics - Anfänger-Themen 4
A text mit float ausgeben Java Basics - Anfänger-Themen 14
G float - Frage Java Basics - Anfänger-Themen 2
G Float schneidet nach dem Rechnen auf eine Stelle ab Java Basics - Anfänger-Themen 9
G String zu float oder int Java Basics - Anfänger-Themen 3
P Float wisenschaftliche Ausgabe/Exponenten Java Basics - Anfänger-Themen 2
G Float Nachkommazahlen vergleichen Java Basics - Anfänger-Themen 7
G PRoblem mit rekursiver float additions methode Java Basics - Anfänger-Themen 9
O Object in Float konvertieren Java Basics - Anfänger-Themen 2
F bei einem Float nur x Stellen nach dem Komma anzeigen ? Java Basics - Anfänger-Themen 7
D Formatierung: ganzzahlige Float Werte nach Int Java Basics - Anfänger-Themen 2
V Exponentieren mit Exponenten vom Typ float Java Basics - Anfänger-Themen 2
J einlesen von datei, float und array und und und. Java Basics - Anfänger-Themen 7
B Vector nach float[] casten Java Basics - Anfänger-Themen 6
S float in int umwandeln? Java Basics - Anfänger-Themen 4
N String -> float Java Basics - Anfänger-Themen 3
M Float-Zahl auf x Stellen beschränken Java Basics - Anfänger-Themen 6
M Problem mit float und nullzuweisung Java Basics - Anfänger-Themen 15

Ähnliche Java Themen

Neue Themen


Oben