我有一个json
消息,如下所示
static string s = @"{
'SampleNumber': '1605',
'Observations': [
{
'Value': 170.116262869025,
'UpperManufacturerRange': 174.00783830400004,
'LowerManufacturerRange': 166.00783830400004,
'UpperControlRangeFromDevice': 174.00783830400003,
'LowerControlRangeFromDevice': 166.00783830400003
}
],
'LastUpdatedUtcTime': '2018-10-30T11:39:19.784942+00:00'
}";
这是我的控制台应用程序https://dotnetfiddle.net/nW7oqj
当我检查selectedJObject
中的值时,数值已更改!
174.00783830400004改为174.00783830400005
这是由于浮点数学。
尝试使用以下类进行转换,十进制属性可确保保持数字的准确性。
public class Test
{
public string SampleNumber;
public string Status;
public int QualityControlType;
public object[] CustomFields;
public Test1[] Observations;
}
public class Test1
{
public object Parameter;
public decimal UpperManufacturerRange;
}
public static void Main()
{
var result = Newtonsoft.Json.JsonConvert.DeserializeObject<Test>(s);
Console.Write(result.Observations[0].UpperManufacturerRange);
}
您现在将看到数字是相同的,即精确地保持精度。