我需要发送一个’双倍’的值,但我是:
>把价值作为一个长期
>将其转换为BigDecimal
>在BigDecimal上调用方法scaleByPowerOfTen(使用’-2’使美分成为一个整数值).
>在BigDecimal上调用doubleValue()以获得所需的值为double.
现在我知道当你对它们应用算术运算时,double值会失去精度,但是如果我尝试基于BigDecimal发送double值,我可能会得到什么,例如(我相信)上面的场景是.
这很重要,因为我必须以这种方式通过SOAP发送货币价值 – 别无他法.
我还有使用String作为BigDecimal创建的场景,然后在其上调用doubleValue().在这种情况下我能得到什么?
编辑:
示例代码:
long amountInCents = 1852;
BigDecimal amountInWholeUnits = BigDecimal.valueOf(amountInCents).scaleByPowerOfTen(-2);
double amountToSend = amountInWholeUnits.doubleValue();
至于金额是以字符串形式提供的情况:
double amountToSend = new BigDecimal("18.52").doubleValue();
UPDATE
现在我有示例代码,我只是认为我可以测试并看到,所以我做了一个for循环并使用了System.out.println:到目前为止很好,值是正确的,所以我相信这将是相同的发送通过SOAP.如果我错了,请纠正我.