2017-02-27 3 views
1

Gibt es einen natürlicheren Weg, diese Zahlen ohne den Einsatz von Casting in Java darzustellen?Zahlen ohne Casting in Java darstellen

float tolerance = (float) 8.0e-7; 
byte[] data = new byte[]{(byte) 0xFF , (byte) 0x15}; 

mit Nicht nur auf jenen Fällen, Gießen überhaupt nicht funktioniert, und es sieht einfach seltsam, wenn Sie Konstanten eines primitiven Typ definieren und Sie haben Gießen zu verwenden, sie zu vertreten (es ist wie du bist sagen, dass Java diese Datentypen natürlich nicht unterstützt, was lächerlich ist).

Ich verstehe, dass für den Schwimmer Nummer, die Sie es wie folgt darstellen:

float tolerance = 0.0000008f; 

aber es ist in dieser Form nur fast unleserlich.

+2

'0x15' wird eigenständig ohne die Besetzung. '0xff' benötigt den Cast, da Bytes in Java signiert sind und als '-1' interpretiert werden. – kjsebastian

+1

@conscells Followup: Also würde' -0x01' ohne Cast als Ersatz für' (byte) 0xFF' funktionieren. Oder nur "-1". – Andreas

+0

beide sollten funktionieren, wenn ich nicht falsch bin – kjsebastian

Antwort

2

Für Float-Werte, können Sie einfach im wörtlichen Ausdruck bringen, dass Sie einen Schwimmer und nicht die doppelte (was die Besetzung erfordert):

float tolerance = 8.0e-7F; 

Es gibt keine wörtliche für Bytes obwohl (siehe here).

+0

Sie können sogar die '.0' löschen, wenn Sie' f' verwenden. – Andreas

+0

Ah, ich verstehe. Vielen Dank. Aber er fragte so; also werde ich es für den Moment behalten. – GhostCat

+0

Ich wünschte, eine ähnliche Lösung für Bytes existiert aber danke für Ihre Antwort @ GhostCat – user2999069