JsonSlurper浮点精度问题

时间:2016-04-06 10:31:54

标签: json groovy jsonslurper

我有一个包含一些数据和配置参数的文件,我需要在将其用作POST休息调用的正文数据之前进行更改。

所以我使用slurper来获取配置值

JsonSlurper slurper = new JsonSlurper()
def inputFile = new File("file.json")
def parsedInput = slurper.parse(inputFile)

然后我改变了所需的配置参数

parsedInput.config.id = 1

然后将修改后的输入文件写入临时文件

def tempFile = new File("temp.json")
tempFile.write(JsonOutput.toJson(parsedInput))

当我意识到输出文件比输入文件大三倍时,我感到非常惊讶。我检查了内容,看起来slurper改变了浮动精度。

修改前

0.145,
0.144,
0.145,

修改后

0.1459999999999999908961711980737163685262203216552734375, 
0.1449999999999999900079927783735911361873149871826171875, 
0.1459999999999999908961711980737163685262203216552734375

任何想法如何解决?

编辑1:添加了一些输入数据

http://wklej.org/hash/4de6639a5bf/txt/

1 个答案:

答案 0 :(得分:0)

检查你的groovy版本,应该在2011年底(https://issues.apache.org/jira/browse/GROOVY-5129

修复