解析JSON舍入负值

时间:2015-02-23 19:35:26

标签: c# json.net rounding

我正在使用NewtonSoft的JSON.NET程序集在C#控制台应用程序中加载.json文件。我认为我完成了大部分工作,除了我发现一些负浮动值正在被舍入。

这是相关代码;正如您所看到的,我尝试了loadparse两种方法但结果相同。

string content;
using (StreamReader reader = new StreamReader("C:\\[Path]\brackett_full_room.json"))
{
  content = reader.ReadToEnd();
}

////  JObject rss = JObject.Load(reader);
JObject rss = JObject.Parse(content);

原始值如下:

"geometry" : {  "rings" : [   [   [  -9221300.3411999997, 4120326.8838  ],
    [  -9221300.2146000005,  4120327.992399998  ]...

但是-9221300.3411999997-9221300.3412变量中变得类似rss,导致坐标不起作用;长期正值很好。

是否有某种方法可以保持足够高的精度(即如果解析为double而不是float,则应该有足够的数字)?

2 个答案:

答案 0 :(得分:6)

安德鲁正确回答的一些代码:

var settings = new JsonSerializerSettings();
settings.FloatParseHandling = FloatParseHandling.Decimal;
string json = @"{ ""rings"" : [  -9221300.3411999997, 4120326.8838  ] }";
var rss = JsonConvert.DeserializeObject(json, settings);

答案 1 :(得分:2)

您需要使用Decimal类型而不是Double来保留有效数字。