gpt4 book ai didi

java - jackson 是否会错误地序列化任何货币值(value)?

转载 作者:太空宇宙 更新时间:2023-11-04 10:38:29 24 4
gpt4 key购买 nike

众所周知,像 0.1 这样的数字无法用 float 精确表示。如果您尝试获取 0.1 的字符串表示形式,您将看到准确的“0.1”,因为 Java(和许多其他语言)在转换为字符串时会为您执行一些隐式舍入。更令人惊讶的是,当将 0.1 序列化为 JSON 时,即使它被序列化为数字而不是字符串类型,您仍然会获得准确的值。我猜这是因为整个 JSON 基本上是一个字符串,因此 Jackson 只是对双倍金额使用正常的字符串转换。

我的问题如下,是否有任何货币值(两位小数或更少)0 < x < 500,000,从精确值转换为 double,然后转换为 JSON 或 String,会产生错误的值。

为了提供一些背景信息,我目前正在编写一些内容,该内容将采用一些精确的货币值,然后以 JSON 形式将所述值直接传递到另一个服务,而不对它们进行任何可能会放大不精确性的计算。为了安全起见,我可能会使用 BigDecimal,但我想知道是否可以使用 double 来逃脱。

最佳答案

你应该没问题:你可以安全地round-trip up to 15 significant figures从小数到 double ,再回到小数,或者以货币计算,精度高达 99 万亿美元到 1 美分。

关于java - jackson 是否会错误地序列化任何货币值(value)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49259930/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com