我有一个JSON文档,其编号为18位。但在cloudwatch日志中,这些数字是四舍五入的,因此以两个零结尾。实际JSON片段:
{
"prd_slnos": [
{
"start": 893800399235546485,
"end": 893800399235546490
}
]
}
Cloudwatch片段:
{
"prd_slnos": [
{
"start": 893800399235546400,
"end": 893800399235546400,
}
]
}
值
度量的值。
类型:
Double
http://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDatum.html
这里的数据类型是双精度浮点数,这是一个64位的数字,它支持比64位整数大得多的范围的可能值,但代价是精度。根据数值的不同,最多有15-17位精度可用。
通过手工计算,我得出了以下值,作为与给定输入数字最接近的数字,当数字表示为双精度时。我得到了一个与CloudWatch显示的值略有不同的值,可能是因为我从0四舍五入,它们向0四舍五入,但你可以看到这意味着——两个不同的数字都有相同的最接近的可能数字,可以用双精度编码表示,这使得这两个数字看起来不仅相等,但正如你所看到的,也"四舍五入"。这是双精度编码的一个限制——不是每个数字都可以表示。
# original value # nearest number in double-precision encoding
893800399235546485 -> 893800399235546600
893800399235546490 -> 893800399235546600
Cloudwatch的行为似乎与记录一致。