2016-01-04 17 views
0

我有一個JSON文檔,其編號爲18位數字。但是在cloudwatch日誌中,這些數字是四捨五入的,因此它們以兩個零結束。 實際JSON片段:亞馬遜cloudwatch沒有寫入日誌,因爲它在實際文件中

{ 
    "prd_slnos": [ 
    { 
     "start": 893800399235546485, 
     "end": 893800399235546490 
    } 
    ] 
} 

CloudWatch的片段:

{ 
    "prd_slnos": [ 
    { 
     "start": 893800399235546400, 
     "end": 893800399235546400, 
    } 
    ] 
} 
+0

您可以以double精度丟失的最大整數爲2^53。請參閱http://stackoverflow.com/questions/1848700/biggest-integer-that-c​​an-be-stored-in-a-double –

回答

1

對所述度量的值。

類型:Double

http://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDatum.html

這裏的數據類型是一個double-precision floating point number,這是支持一個更大的範圍內的64位的數大於64位整數的可能值的 ,這是以精確性爲代價的。取決於數值,最多可以使用15-17位數的精度。

手工處理這個問題,當數字表示爲double時,我想出了以下值作爲給定輸入數字的最接近數字的可能數字。我得出的結果與CloudWatch顯示的值略有不同,大概是因爲我捨去了0並且它們趨於0,但是您會看到這種含義 - 兩個不同的數字具有相同的最近可能數量,精確的編碼,這就使得這兩個數字的外觀不僅是等價的,而且也是「四捨五入」的,正如你所看到的。這是雙精度編碼的限制 - 不是每個數字都可以表示。

# original value  # nearest number in double-precision encoding 
893800399235546485 -> 893800399235546600 
893800399235546490 -> 893800399235546600 

Cloudwatch似乎表現得像文件記錄。