当前位置: 首页 > 面试题库 >

BigDecimal转换为字符串

南门意蕴
2023-03-14
问题内容

我有一个BigDecimal对象,我想将其转换为字符串。问题是我的值得到了分数,我得到了一个很大的数字(长度),例如,我只需要字符串中的原始数字即可:

BigDecimal bd = new BigDecimal(10.0001)
System.out.println(bd.toString());
System.out.println(bd.toPlainString());

输出为:

10.000099999999999766941982670687139034271240234375
10.000099999999999766941982670687139034271240234375

我需要把输出准确地10.0001放在字符串中


问题答案:

要获得准确的结果,10.0001您需要使用String构造函数或valueOf(它基于double的规范表示构造一个BigDecimal):

BigDecimal bd = new BigDecimal("10.0001");
System.out.println(bd.toString()); // prints 10.0001
//or alternatively
BigDecimal bd = BigDecimal.valueOf(10.0001);
System.out.println(bd.toString()); // prints 10.0001

问题new BigDecimal(10.0001)在于参数是a
double,并且恰巧双精度不能10.0001正确表示。因此10.0001,“转换”为最接近的可能的两倍,这就是10.000099999999999766941982670687139034271240234375您所BigDecimal显示的。

因此,使用double构造函数几乎没有意义。

您可以在此处了解更多信息,将小数点后移两位



 类似资料:
  • 问题内容: 在我的GWT Web应用程序中,我有一个保存价格的文本框。如何将String转换为BigDecimal? 问题答案: 最简单的方法是创建一个继承ValueBox的新文本框小部件。如果您采用这种方式,则无需手动转换任何字符串值。ValueBox会处理所有这一切。 要输入BigDecimal值,您可以执行以下操作: 您的 BigDecimalBox.java : 然后你的 BigDecim

  • 问题内容: 我怎样才能投来? 问题答案: 您必须创建一个新的。

  • 问题内容: 我正在尝试从字符串中读取一些BigDecimal值。假设我有以下字符串:“ 1,000,000,000.999999999999999”,我想从中获取BigDecimal。怎么做呢? 首先,我不喜欢使用字符串替换(替换逗号等)的解决方案。我认为应该有一些精巧的格式化程序为我完成这项工作。 我发现了DecimalFormatter类,但是它通过两次操作-损失了大量精度。 那么,我该怎么办

  • 问题内容: 我有Hibernate方法,它返回给我一个BigDecimal。我有另一个API方法,我需要将该数字传递给它,但是它接受Integer作为参数。我不能更改两种方法的返回类型或变量类型。 现在如何将BigDecimal转换为Integer并将其传递给第二种方法? 有没有解决的办法? 问题答案: 您将致电(或仅致电),如果您丢失了信息,它甚至会引发异常。返回一个int,但是自动装箱可以解决

  • 我正在使用Schembuf在带有套接字的计算机之间更改数据。要传输数据,我使用以下内容: 然而,我注意到Protobuf无法读取任何非int类型的接收数据(它将其分配给0)。果不其然,如果我不使用套接字,但试图用相同的代码片段返回消息,则会发生相同的情况: 我还指出: 那么,为什么我不能正确地将数据转换回字符串呢?如果这是一个参考问题,为什么protobuf不能读取字符数组数据或从字符数组转换的字

  • 我正在使用Apache POI读取<代码>。docx文件,并在一些操作后写入。<代码>。我使用的docx文件是法语的,但当我在它将一些法语字符转换为特殊字符。示例转换为 下面的代码用于编写文件 默认使用UTF-8。 在调试时,我在写入<代码>之前进行了检查。csv数据保持原样。但它在写作时被转换了吗?我已将默认语言环境设置为语言环境。法语 我错过了什么吗?