Java double value_java – 如果没有对金额执行任何操作,BigDecimal.doubleValue()的准确度...

博客讨论了在处理货币值时,如何从long类型转换为BigDecimal,再转为double,以准备通过SOAP协议发送。作者通过示例代码展示了这个过程,并对可能的精度损失进行了探讨。在测试中,发现转换后的double值保持正确,预计在SOAP传输中也将如此。
摘要由CSDN通过智能技术生成

我需要发送一个’双倍’的值,但我是:

>把价值作为一个长期

>将其转换为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.如果我错了,请纠正我.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值