La méthode NumberFormat.getInstance () renvoie une instance de NumberFormat (en fait une sous-classe spécifique de NumberFormat, telle que DecimalFormat), qui convient à la mise en forme d'un nombre en fonction des paramètres locaux. Vous pouvez également utiliser des paramètres régionaux non défautés, comme l'Allemagne. La méthode de formatage forme ensuite les nombres en fonction de règles régionales spécifiques. Ce programme peut également être utilisé sous une forme simple:
Numberformat.getInstance (). Format (1234.56)
Mais sauver un format puis le réutiliser est plus efficace. L'internationalisation est un gros problème lors de la mise en forme des nombres.
Un autre est un contrôle efficace sur le format, tel que la spécification du nombre de chiffres dans la partie fractionnaire. Voici un exemple simple pour résoudre ce problème:
import java.text.decimalformat; import java.util.locale; classe publique decimalformat2 {public static void main (String args []) {// Obtenez le format par défaut local decimalformat df1 = new Decimalformat ("####. 000"); System.out.println (df1.format (1234.56)); // obtient le format allemand Locale.SetDefault (Locale.German); Decimalformat df2 = new Decimalformat ("####. 000"); System.out.println (df2.format (1234.56));}} Dans cet exemple, le format de nombre est défini, en utilisant des symboles comme "####. 000". Ce mode signifie qu'il y a quatre nombres avant le point décimal. Si ce n'est pas suffisant, ce sera vide. S'il y a trois nombres après le point décimal, il sera rempli de 0. Sortie du programme:
1234.560
1234 560
De même, les formats sous forme exponentielle peuvent également être contrôlés, par exemple:
import java.text.decimalformat; classe publique decimalformat3 {public static void main (String args []) {decimalformat df = new decimalformat ("0.000e0000"); System.out.println (df.format (1234.56));}} Sortir:
1.235e0003
Pour les pourcentages:
import java.text.numberformat; public class decimalformat4 {public static void main (String args []) {normeFormat nf = numberformat.getpercentance (); System.out.println (nf.format (0.47));}} Sortir:
47%
Jusqu'à présent, vous avez vu plusieurs techniques différentes de formatage des nombres. D'un autre côté, comment lire et analyser une chaîne contenant des numéros formatés? La prise en charge de la résolution est incluse dans NumberFormat. Par exemple:
import java.util.locale; import java.text.numberformat; import java.text.parseException; classe publique decimalformat5 {public static void main (String args []) {// format local NumberFormat nf1 = NumberFormat.getInstance (); Objet obj1 = null; // l'analyse basée sur le format essaie {obj1 = nf1.parse ("1234,56"); } catch (parseException e1) {System.err.println (e1); } System.out.println (obj1); // Format allemand NumberFormat nf2 = NumberFormat.getInstance (Locale.German); Objet obj2 = null; // l'analyse basée sur le format essaie {obj2 = nf2.parse ("1234,56"); } catch (parseException e2) {System.err.println (e2); } System.out.println (obj2); }} Cet exemple est divisé en deux parties, qui analysent une chaîne: "1234,56". La première partie utilise le format local pour analyser, tandis que la deuxième partie utilise le format allemand pour analyser. Lorsque le programme fonctionne aux États-Unis, le résultat est:
123456
1234.56
En d'autres termes, "1234,56" est considéré comme un énorme entier aux États-Unis "123456" et une décimale en Allemagne "1234.56".
Connexion Decimalformat et NumberFormat
Dans l'exemple ci-dessus, Decimalformat et NumberFormat sont utilisés. Decimalformat est souvent utilisé pour obtenir un bon contrôle de format, tandis que NumberFormat est souvent utilisé pour spécifier différentes régions de la local. Comment combiner deux catégories?
La réponse tourne autour du fait que Decimalformat est une sous-classe de NumberFormat, dont l'instance est spécifiée comme une région spécifique. Par conséquent, vous pouvez spécifier une région à l'aide de Numberformat.getInstance, puis de lancer la structure dans un objet Decimalformat. La documentation mentionne que cette technique peut être appliquée dans la plupart des cas, mais vous devez utiliser un bloc d'essai / capture pour entourer le casting au cas où la conversion ne fonctionnerait pas correctement (probablement en utilisant une zone étrange dans des situations très discrètes). Voici un exemple comme celui-ci:
import java.text.decimalformat; import java.text.numberformat; import java.util.locale; classe publique decimalformat6 {public static void main (String args []) {decimalformat df = null; // Obtenez un objet NumberFormat et // coulé sur un objet DecimalFormat try {df = (decimalformat) NumberFormat.getInstance (locale.german); } catch (classcastException e) {System.err.println (e); } // Définir le mode format df.ApplyPattern ("####. 00000"); // format un nombre System.out.println (df.format (1234.56)); }} La méthode getInstance () obtient le format, puis appelle la méthode applatpattern () pour définir le mode format, sortie:
1234 56000
Si vous ne vous souciez pas de l'internationalisation, vous pouvez utiliser directement Decimalformat.
Lorsque V est un double non transformé, l'échelle est la précision requise et renvoie un double qui nécessite un chiffre décimal.
Public Static Double Round (double V, Int Scale) {if (échelle <0) {Throw New illégalArgumentException ("L'échelle doit être un entier ou un zéro positif"); } Bigdecimal b = new BigDecimal (double.tostring (v)); BigDecimal One = New Bigdecimal ("1"); retour b.divide (un, échelle, bigdecimal.round_half_up) .DoubleValue (); } Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.