1

我在 groovy 中使用 JsonSlurper 将 json 文本转换为地图。

def slurper = new JsonSlurper();
def parsedInput = slurper.parseText("{amount=10.00}");

结果是

[amount:10.0]

我需要结果而不修剪最后一个零。喜欢

[amount:10.00]

已经检查了各种解决方案,但是如果不修剪最后一个零,这不会被转换。我在这里错过了什么吗。

我发现的一种方法是输入如下:

{amount="10.00"}
4

2 回答 2

3

在数字和数学方面,10.00 IS 10.0

它们是完全相同的数字。

他们只是有不同的字符串表示。

如果您需要向10.0用户显示,10.00那么这是一个转换,因为您需要将其转换为具有 2 个小数位的字符串

就像是:

def stringRepresentation = String.format("%.02f", 10.0)

但是对于任何计算,10.0都是10.00一样的


编辑-再试一次...

对了,当你有 json 时:

{"amount"=10.00}

右边的值是一个浮点数。

要保留额外的零(通常会被数字的每个理智表示删除),您需要将其转换为字符串。

为此,您可以使用String.format上述方法(可以使用其他方法)。

您不能将其保留为带有额外零的浮点数。

数字在我能想到的每一种语言中都不是这样工作的……在我的记忆中,他们可能在 COBOL 中工作,但这偏离了轨道

于 2016-05-09T09:21:39.930 回答
0

该问题 ( GROOVY-6922 ) 在 Groovy 版本 2.4.6 中得到修复。与 2.4.6 应保留数字的比例。

于 2016-05-09T15:01:28.740 回答