正在解析 JSON 轮负值

Parsing JSON rounds Negative Values

我正在使用 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.3411999997rss 变量中变成了类似 -9221300.3412 的东西,这导致坐标不起作用;长正值很好。

有没有办法保持足够高的精度(即,如果解析为 double 而不是 float,应该有足够的数字)?

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

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

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