使用JAVA从JSON获取14位小数

使用JAVA从JSON获取14位小数,java,json,rest-assured-jsonpath,Java,Json,Rest Assured Jsonpath,我有一个来自API的JSON源代码,我必须从JSON响应中获得平衡,因此值非常重要。该金额为xx.XXXXXXXXXXXXX(通常为两位数字,后面最多14位小数) 我正在使用JAVA。无论我尝试什么,输出总是一样的。控制台说这是一个浮动,我不能将它转换为任何其他格式。最奇怪的是显示的数字是错误的。例如,我在JSON响应中得到803.599310421,当我打印出值时,它显示803.5989647583。相同的数字但不同的小数 我如何准确地得到这个?因为坦率地说,我不想把它解析为字符串。从JSON

我有一个来自API的JSON源代码,我必须从JSON响应中获得平衡,因此值非常重要。该金额为xx.XXXXXXXXXXXXX(通常为两位数字,后面最多14位小数)

我正在使用JAVA。无论我尝试什么,输出总是一样的。控制台说这是一个浮动,我不能将它转换为任何其他格式。最奇怪的是显示的数字是错误的。例如,我在JSON响应中得到803.599310421,当我打印出值时,它显示803.5989647583。相同的数字但不同的小数

我如何准确地得到这个?因为坦率地说,我不想把它解析为字符串。从JSON中获得相同值的唯一方法是使用子字符串

以下是我使用的代码:

    JsonPath jsonobject = httpRequest2.jsonPath();
    float myFloatValue = jsonobject.get("data[0].balance");
    System.out.println(myFloatValue);
下面是JSON中的值示例:903.40019831 以下是Sysout打印的内容:903.4004或903.4003987 完全没用,请帮忙

浮动精度不高。 使用BigDecimal。

那为什么不使用浮点呢?因为公司的政策,我不能显示代码。我使用的是重新发行的JsonPath类型。试过JSONObject(org.json.simple)好吧,你试过
double myFloatValue=JSONObject.get(“数据[0].balance”)?使用
float myFloatValue=…
可以立即将值向下转换为
float
。当然,我试过了。无法将java.lang.Float转换为java.lang.double。我不认为这是重复的。问题似乎出在库上。如果您告诉OP如何告诉JSON解析器使用
BigDecimal
而不是
float
,那么这个答案会更有用。我不知道为什么要使用float。Tobias,是的,这将非常有用!找不到任何东西,无论如何我不是故意使用float。这就是它的归宿。不是我,我只是被迫坚持漂浮。如果有人有更好的想法,欢迎他们