我从事不同的 Web 服务,我总是首先使用 WSDL。
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
(存储在数据库中并通过 hibernate 映射到 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
) - 休眠映射
double
到Bigdecimal
并以一种对象类型执行我所有的算术运算。