【问题标题】:Why does my json data changes while processing it? [duplicate]为什么我的 json 数据在处理时会发生变化? [复制]
【发布时间】:2019-07-27 20:15:44
【问题描述】:

我有一条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

【问题讨论】:

标签: c# json json.net


【解决方案1】:

这是由于浮点数学。

尝试使用以下类进行转换,decimal 属性确保保持数字的准确性。

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);
}

您现在会看到数字是相同的,即精度保持准确。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-07
    • 1970-01-01
    • 2022-01-06
    相关资源
    最近更新 更多