Le BigDecimal de Java est-il le type de données le plus proche correspondant au Decimal de C# ?
-
21-12-2019 - |
Question
D'après le tableau ici, le type de données équivalent en Java à celui de C# Decimal
est BigDecimal
.
Est-ce vraiment le cas ?Que se passe-t-il avec le préambule « Grand » ?Il ne semble pas y avoir de "SmallDecimal" ou de "LittleDecimal" (et encore moins de "MediumSizedDecimal") en Java.
Je dois dire, cependant, que ce tableau était la chose la plus claire que j'ai trouvée sur le sujet ;les autres liens ici et ici et ici étaient à peu près aussi clairs pour moi que le fleuve Mississippi après une tempête torrentielle.
La solution
Yep - c'est le type correspondant.
Puisque vous utilisez Java après C # - Ne soyez pas trop surpris de trouver de petites nuances comme celle-ci - ou d'être trop mécontent quand il n'y a pas de moyen facile de faire quelque chose qui est «facile» de faire C #.La première chose qui vient à mon esprit est int & int?- En Java, vous utilisez simplement Int et Integer.
C # a eu le luxe de venir après Java, beaucoup de (ce que je considère subjectivement comme) de mauvaises décisions ont été fixées / rationalisées.Aussi, il aide que c # a été conçu par andresferrerg (qui est sans doute l'un des meilleurs langages de programmationLes designers vivants) et est régulièrement "mis à jour" contrairement à Java (vous avez probablement été témoin de toutes choses ajoutées à C # depuis 2000 - Liste complète )
Autres conseils
Est-ce vraiment le cas ?
Ils sont similaires mais pas identiques.Pour être plus précis:la version Java peut représenter toutes les valeurs que la version C# peut représenter, mais l'inverse n'est pas vrai.
Que se passe-t-il avec le préambule « Grand » ?
Un Java BigDecimal
peut avoir arbitrairement beaucoup de précision et peut donc être arbitrairement grand.Si vous voulez faire un BigDecimal
avec mille précisions, vous avancez droit devant.
En revanche, un C# decimal
a une taille fixe ;il occupe 128 bits et vous donne 28 décimales de précision.
Être plus précis:les deux types vous donnent des numéros de la forme
+/- someInteger / 10 ^ someExponent
En C#, someInteger
est un entier non signé de 96 bits et someExponent
est un entier compris entre 0 et 28.
En Java, someInteger
est de taille arbitraire et someExponent
est un entier signé de 32 bits.