API 响应中数值较大时转换为科学记数法的十进制值

问题描述 投票:0回答:1

我正在处理一个 GET 请求,它应该返回响应中的键值之一作为 400000000000.00,但在空手道框架中,键值在响应中以指数格式显示为 4E+11。

但是当使用邮递员执行相同的请求时,它会按预期以数字格式显示响应值

我已尝试浏览该文档,但没有找到任何所需的详细信息。较小的数字以数字格式显示,并且根据我的观察,仅针对较大的数字(例如 12 位数字)观察到该问题

由于转换是自动在响应详细信息中发生的

空手道的预期回应: {“余额”:400000000000.00}

但是空手道框架返回的响应为 {“余额”:4E+11}

karate exponential
1个回答
0
投票

Karate 将数据解析为 Java 原语,99.9% 的情况下,这都可以正常工作。

正如评论中有人提到的,当你需要产生大量数字时,可以使用

BigDecimal
类:https://github.com/karatelabs/karate#large-numbers

发送包含您想要的确切数字的请求的另一种方法是使用字符串,并确保您的

Content-Type
标头设置正确。例如:

* url 'https://httpbin.org/post'
* header Content-Type = 'application/json'
* request '{ "num": 400000000000.00 }'
* method post
* match response.json.num == 400000000000

您可以自己尝试一下,并注意空手道如何正确

match
并处理大量数字。

另一个提示是空手道始终将响应存储为字节,并且将以

responseBytes
的形式提供。 将其转换为字符串将允许您看到“实际”响应。

* string temp = responseBytes
* assert temp.contains('"num": 400000000000.0')
© www.soinside.com 2019 - 2024. All rights reserved.