2012-06-20 1 views

Répondre

12

Il suffit d'utiliser le type Decimal (Numeric) à la place, comme documented in the manual, par ex. cost decimal(10,2).

Le premier numéro (10) définit le total longueur du nombre (tous les chiffres, y compris après la virgule), alors que le deuxième (2) indique combien d'entre eux sont après la virgule. La déclaration ci-dessus vous donne 8 chiffres devant le point. Bien sûr, vous pouvez augmenter cela - les limitations du type Numeric sont beaucoup, beaucoup plus élevées. À mon avis, il n'est pas nécessaire d'utiliser le virgule flottante lorsque vous gérez des devises ou d'autres valeurs monétaires. Je n'ai aucune idée de la comparaison des performances entre les deux types, mais Decimal a un avantage - c'est un nombre exact (ce qui n'est généralement pas le cas avec les virgules flottantes). Je suggère également de lire un interesting, but short discussion on the topic.

+1

Je suis d'accord. Le type de données 'float' (ou' real') n'est pas utile du tout. –

+0

Ok. Une autre question, Comment puis-je déclarer un type de données décimal dans le fichier service.xml dans liferay mvc? Une idée ? – saurjk

+0

Pour autant que je sache, il n'y a pas de solution directe. Une solution de contournement, en utilisant 'BigDecimal' de Java, [peut être trouvé dans les commentaires à Liferay LEP-841] (http://issues.liferay.com/browse/LEP-841). Il est également [discuté dans le forum] (http://www.liferay.com/community/forums/-/message_boards/message/11788130). J'espère que vous pouvez trouver une solution; sinon - postez une autre question, je suis sûr que quelqu'un a déjà fait quelque chose de similaire. – Sorrow

Questions connexes