如何在Java中将BigDecimal转换为Double?


111

我们如何在Java中转换BigDecimalDouble?我有一个要求,我们必须使用Double作为参数,但是我们越来越明白了,BigDecimal所以我必须转换BigDecimalDouble


10
怎么样new BigDecimal(2).doubleValue()
Matthias

6
提出问题之前,请务必先阅读文档。您通常会发现您的问题得到了回答。请参阅doubleValue()。(提示:要查找特定类的文档,只需在google中搜索类名称,后跟java。例如,要查找此文档,我搜索了“ BigDecimal Java”)
Justin

1
“我有一个必须使用Double作为参数的要求”将要求更改。BigDecimal除非端到端使用它,否则根本没有意义。此要求会影响准确性。可能会损害合规性;并可能构成可起诉的过失。
2013年

你为什么用Double而不用double。这是一个可以的领域null吗?
彼得·劳瑞

@EJP使用double并没有那么糟糕,但是它具有超过15位数的表示精度,这比大多数程序都需要更多,但是我同意在某些时候使用BigDecimal是没有意义的,因为您更有可能添加错误/复杂性。
彼得·劳瑞

Answers:


224

您需要使用该doubleValue()方法从BigDecimal对象获取double值。

BigDecimal bd; // the value you get
double d = bd.doubleValue(); // The double you want

嗨,我用的是相同的,但是问题是两个分析器都不同,我的十进制输出是13555261857.79,当转换为它的1.355526185779E10的两倍时。我如何将十进制转换为两倍后得到相同的输出
user13926345

@ user13926345-两者是相同的值。只是第一个输出是值的正常表示,另一个是科学表示
SudoRahul

35

您可以转换BigDecimaldouble使用.doubleValue()。但是请相信我,如果您进行货币操作,请勿使用它。它应该始终BigDecimal直接在对象上执行。这些计算中的精度损失是货币相关计算中的重大时间问题。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.