Maison  >  Article  >  Java  >  Exemple de code d'arrondi Java et de bits réservés

Exemple de code d'arrondi Java et de bits réservés

黄舟
黄舟original
2017-08-22 09:56:471267parcourir

Cet article présente principalement des exemples d'arrondis et de bits réservés en Java. L'éditeur pense que c'est plutôt bien, je vais donc le partager avec vous maintenant et le donner comme référence. Suivons l'éditeur pour y jeter un œil

L'arrondi est un problème mathématique dans notre école primaire. Pour nous, programmeurs, ce problème est aussi simple que l'addition, la soustraction, la multiplication et la division de 1 à 10. Avant d'expliquer, jetons un oeil au cas classique suivant :


public static void main(String[] args) { 
    System.out.println("12.5的四舍五入值:" + Math.round(12.5)); 
    System.out.println("-12.5的四舍五入值:" + Math.round(-12.5)); 
  }

Sortie :

La valeur d'arrondi de 12,5 : 13

-La valeur d'arrondi de 12,5 : -12

C'est un cas classique d'arrondi, et c'est aussi quelque chose que nous avons souvent rencontré lors de ma participation au recrutement scolaire (il me semble l'avoir rencontré à plusieurs reprises lors de l'examen écrit). D'après les résultats ici, nous constatons que ces deux nombres ont la même valeur absolue, pourquoi les valeurs approximatives sont-elles différentes ? En fait, cela est déterminé par les règles d'arrondi adoptées par Math.round.

L'arrondi est effectivement beaucoup utilisé en finance, notamment dans les intérêts bancaires. Nous savons tous que le principal canal de profit d'une banque est la différence d'intérêts. Elle collecte les fonds auprès des déposants et les prête ensuite. La différence d'intérêts générée au cours de cette période constitue le bénéfice réalisé par la banque. Si l'on adopte les règles d'arrondi habituelles, nous utilisons ici comme modèle le calcul des intérêts tous les 10 dépôts, comme suit :

Arrondi : 0,000, 0,001, 0,002, 0,003, 0,004. Tout cela, c'est de l'argent gagné par la banque.

Cinq entrées : 0,005, 0,006, 0,007, 0,008, 0,009. Il s'agit de l'argent perdu par la banque, respectivement : 0,005, 0,004, .003, 0,002, 0,001.

Donc pour la banque son bénéfice devrait être de 0,000 + 0,001 + 0,002 + 0,003 + 0,004 - 0,005 - 0,004 - 0,003 - 0,002 - 0,001 = -0,005. Les résultats montrent que la banque peut perdre 0,005 yuans pour 10 paiements d'intérêts. Ne sous-estimez pas ce chiffre. Il s'agit d'une très grosse perte pour la banque. Face à ce problème, la méthode suivante d’implication des banquiers est née. Cet algorithme a été proposé par des banquiers américains et est principalement utilisé pour corriger les erreurs causées par les règles d'arrondi ci-dessus. Comme suit :

Lorsque la valeur du chiffre d'arrondi est inférieure à 5, elle sera arrondie directement.

Lorsque la valeur du chiffre d'arrondi est supérieure à 5, il sera arrondi et arrondi.

Lorsque la valeur du chiffre d'arrondi est égale à 5, s'il y a d'autres valeurs non 0 après 5, il sera arrondi après report. S'il y a un 0 après 5, il sera arrondi. sera basé sur le numéro du chiffre avant 5. Le jugement est basé sur la parité, les nombres impairs sont arrondis et les nombres pairs sont écartés.

Pour les règles ci-dessus, nous donnons un exemple

  • 11,556 = 11,56 ------Six entrées

  • 11,554 = 11,55 -----Quatre tours

  • 11,5551 = 11,56 -----Cinq tours avec portage

  • 11,545 = 11,54 -----Le nombre après cinq est innombrable, si le premier chiffre est un nombre pair, il doit être écarté

  • 11,555 = 11,56 -----Le nombre après cinq est innombrable, si le premier chiffre est un nombre impair, il doit être porté

L'exemple suivant utilise la méthode d'arrondi du banquier :


 public static void main(String[] args) { 
    BigDecimal d = new BigDecimal(100000);   //存款 
    BigDecimal r = new BigDecimal(0.001875*3);  //利息 
    BigDecimal i = d.multiply(r).setScale(2,RoundingMode.HALF_EVEN);   //使用银行家算法  
     
    System.out.println("季利息是:"+i); 
    }

Sortie :

L'intérêt trimestriel est : 562,50

La méthode d'arrondi du banquier est brièvement présentée ci-dessus. Actuellement, Java prend en charge 7 arrondis. méthodes :

1. ROUND_UP : Arrondir à partir de zéro. Arrondi vers la valeur absolue maximale, tant que le bit de suppression n'est pas 0, il est reporté.

2. ROUND_DOWN : Arrondir vers zéro. Entrez dans la direction avec la plus petite valeur absolue, tous les bits seront ignorés et il n'y aura pas de report.

3. ROUND_CEILING : Arrondir vers l'infini positif. Rapprochez-vous de la direction maximale positive. S'il s'agit d'un nombre positif, le comportement d'arrondi est similaire à ROUND_UP, s'il s'agit d'un nombre négatif, le comportement d'arrondi est similaire à ROUND_DOWN. La méthode Math.round() utilise ce modèle.

4. ROUND_FLOOR : Arrondir vers l'infini négatif. Rapprochez-vous de l’infini négatif. S'il s'agit d'un nombre positif, le comportement d'arrondi est similaire à ROUND_DOWN ; s'il s'agit d'un nombre négatif, le comportement d'arrondi est similaire à ROUND_UP.

5. HALF_UP : Le nombre le plus proche est arrondi (arrondi à 5 chiffres). Il s’agit de notre tour d’horizon le plus classique.

6. HALF_DOWN : Le nombre le plus proche est arrondi (5 arrondis). Ici, 5 doit être écarté.

7. HAIL_EVEN : Méthode d'arrondi du banquier.

En matière d'arrondi, les bits réservés sont essentiels. Dans les opérations Java, nous pouvons utiliser diverses méthodes pour implémenter les bits réservés.

Bits réservés

Méthode 1 : Arrondi


double  f  =  111231.5585; 
BigDecimal  b  =  new  BigDecimal(f); 
double  f1  =  b.setScale(2,  RoundingMode.HALF_UP).doubleValue();

Utilisez BigDecimal ici, utilisez la méthode setScale pour définir la précision, et utilisez RoundingMode.HALF_UP pour indiquer l'utilisation de la règle d'arrondi des nombres la plus proche pour approximer le calcul. Ici, nous pouvons voir que BigDecimal et l’arrondi correspondent parfaitement.
Méthode 2 :


java.text.DecimalFormat  df  =new  java.text.DecimalFormat(”#.00″); 
df.format(你要格式化的数字);

Exemple : new java.text.DecimalFormat(”#.00″).format(3.1415926)

#.00 Représente deux décimales #.0000 quatre décimales et ainsi de suite...

Méthode 3 :


double d = 3.1415926; 
 
String result = String .format(”%.2f”);

%.2f %. signifie n'importe quel nombre de chiffres avant la virgule décimale 2 signifie que le résultat après deux décimales est au format f signifie type à virgule flottante.

Méthode 4 :

De plus, si vous utilisez la balise struts pour la sortie, il existe un attribut de format, défini sur format=" 0,00" pour le conserver Deux décimales

例如: 


<bean:write name="entity" property="dkhAFSumPl" format="0.00" /> 
//或者 
<fmt:formatNumber type="number" value="${10000.22/100}" maxFractionDigits="0"/>

maxFractionDigits表示保留的位数 

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn