2012-03-25 12 views
2

Nach dem docsUnerwartete wissenschaftliche Formatierung auf Schwimmern

String text = String.format("%5.1e", 3.1415f); 

Sollte so etwas wie

3.1E+00 

Auf meinem Emulator produzieren als

erwartet wird
3.1E+00 

Auf meinem dev Telefon zeigt es als

3.1*10^+00 

Das macht es für alle praktischen Zwecke nutzlos.

Die Android-Dokumentation sagt mir nicht viel über Lokalisierung, aber die Oracle doc s erwähnt nur lokalisierte Formatierung des ersten Teils "3.1".

Gibt es eine einfache Möglichkeit, konsistente Formatierung zu erhalten?

Ist dieses dokumentierte Verhalten? ein Käfer?

Ein HTC Nexus One gibt das seltsame Verhalten, ein Samsung Galaxy Nexus gibt das richtige Verhalten.

+0

Haben Sie das gleiche mit einer Standard-JVM versucht? –

+0

Ja, mein Desktop-Java gibt die vernünftige Alternative. –

+0

sollten Sie es auf ein paar anderen Handys versuchen und sehen, was Sie bekommen. –

Antwort

1

es klingt wie es ist ein Problem der N1 oder in der Version von Android, dass die N1 läuft. Eine Option wäre, den Code von irgendwo her zu holen, von dem Sie wissen, dass er funktioniert, und in Ihren eigenen Formatierer für wissenschaftliche Zahlen zu kopieren.

Blick auf die Quelle für java.util.Formatter, werfen Sie einen Blick auf diese print() Methode. Hier scheint die Magie zu sein.