提问人:Han 提问时间:2/16/2023 最后编辑:Dave NewtonHan 更新时间:2/16/2023 访问量:458
来自 json 的 BigDecimal 失去精度
BigDecimal from json loses precision
问:
网络调用显示后端正在发送以下内容:
"uom" : "EA",
"qty" : 1.123456789012345678
但是当它到达前端时,使用 Console.log:
{
qty: 1.1234567890123457,
uom: "EA"
}
为什么 JavaScript 会丢失最后一位数字或截断数字?
该数字在 java 中使用 BigDecimal 表示。前端使用 AngularJs 框架,对后端进行 GET 调用,请求 JSON。
答:
2赞
phatfingers
2/16/2023
#1
Javascript 浮点数拥有 64 位精度,类似于 Java 中的 a。如果你必须在 Java 中使用 BigDecimal 来扩展超过该精度级别,则需要在 Javascript 中执行类似操作以超出其相似边界。NPM 包 js-big-decimal 可能是你最好的选择,你可以将值作为字符串在 JSON 中传输,以防止 JSON.parse 将它们解释为 Number。double
0赞
Han
2/16/2023
#2
感谢您的帮助。我发现添加
@JsonSerialize(using = ToStringSerializer.class)
public getQty(){
return this.qty;
}
到 java 域对象解决了这个问题。
评论
0赞
shmosel
2/16/2023
缺少返回类型。
评论