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

将double转换为BigDecimal并设置BigDecimal精度

司徒杜吟
2023-03-14
问题内容

在Java中,我想要一个双BigDecimal精度值并将其转换为a 并以一定的精度打印出它的String值。

import java.math.BigDecimal;
public class Main {
    public static void main(String[] args) {
        double d=-.00012;
        System.out.println(d+""); //This prints -1.2E-4

        double c=47.48000;
        BigDecimal b = new BigDecimal(c);
        System.out.println(b.toString()); 
        //This prints 47.47999999999999687361196265555918216705322265625 
    }
}

它打印出这个巨大的东西:

47.47999999999999687361196265555918216705322265625

并不是

47.48

我进行BigDecimal转换的原因是有时double值将包含很多小数位(即-.000012),而将double转换为String时将产生科学计数法-1.2E-4。我想以非科学计数法存储String值。

我希望BigDecimal总是这样具有两个精度单位:“ 47.48”。BigDecimal可以限制转换为字符串时的精度吗?


问题答案:

如果您使用另一个MathContext,它将显示47.48000

BigDecimal b = new BigDecimal(d, MathContext.DECIMAL64);

只需选择所需的上下文即可。



 类似资料:
  • 在Java中,我想取一个double值并将其转换为并打印出其字符串值以达到一定精度。 我进行转换的原因是,有时double值会包含很多小数位(即),而当将double转换为字符串时,会生成科学符号。我想用非科学符号存储字符串值。 我想让BigDecimal始终有两个精度单位,像这样:“47.48”。BigDecimal可以限制转换为字符串时的精度吗?

  • 问题内容: 我正在使用完全基于双精度的应用程序,并且在将字符串解析为双精度的一种实用程序方法中遇到麻烦。我找到了一个解决方法,其中使用BigDecimal进行转换可以解决该问题,但是当我打算将BigDecimal转换回double时又提出了另一个问题:我失去了几个精度位。例如: 这将产生以下输出: 格式化的double值表明它已经失去了第三位的精度(应用程序要求较低的精度)。 如何获得BigDec

  • 问题内容: 我们如何在Java中转换成?我有一个要求,我们必须使用Double作为参数,但是我们越来越明白了,所以我必须转换成。 问题答案: 您需要使用该方法从BigDecimal对象获取double值。

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

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

  • 问题内容: 我有一个XSD,要求我对经纬度使用BigDecimal。目前,我将经度/纬度作为双精度值,并将其转换为BigDecimal,但仅需要使用12个精度位即可。我还无法弄清楚该如何设置。谁能帮我这个? 问题答案: 问题的标题询问精度。BigDecimal区分小数位数和精度。小数位数是小数位数。您可以将精度视为有效数字的数量,也称为有效数字。 Clojure中的一些示例。 (在Clojure中