Я работаю над разными веб-сервисами и всегда использую WSDL First.
JAXB генерирует для типа типа:
<xsd:simpleType name="CurrencyFormatTyp">
<xsd:restriction base="xsd:decimal">
<xsd:totalDigits value="13"/>
<xsd:fractionDigits value="2"/>
<xsd:minInclusive value="0.01"/>
</xsd:restriction>
</xsd:simpleType>
тип привязки Java BigDecimal
(так какупоминается в спецификации JAXB).
Когда я затем выполняю простую арифметическую операцию со значениями типа double
(которые хранятся в базе данных и отображаются через спящий режим на тип double), у меня возникают проблемы.
<ns5:charge>0.200000000000000011102230246251565404236316680908203125</ns5:charge>
<ns5:addcharge>0.0360000000000000042188474935755948536098003387451171875</ns5:addcharge>
<ns5:tax>0.047199999999999998900879205621095024980604648590087890625</ns5:tax>
<ns5:totalextax>0.2360000000000000153210777398271602578461170196533203125</ns5:totalextax>
Что будет правильным?
- Преобразовать все мои значения в двойные (привязка JAXB из
BigDecimal
в double
) - Отображение Hibernate
double
до Bigdecimal
и выполнять все мои арифметические операции в одном типе объекта.