关于c#:解析JSON舍入负值

Parsing JSON rounds Negative Values

我正在使用NewtonSoft的json.net程序集在C控制台应用程序中加载.json文件。我想我已经完成了大部分的工作,除了我发现一些负的浮点值正在四舍五入。

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

1
2
3
4
5
6
7
8
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);

原始值如下:

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

但是,-9221300.3411999997rss变量中变成了类似-9221300.3412的东西,这导致坐标不起作用;长的正值很好。

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


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

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


为了保持有效数字的数量,需要使用十进制类型而不是双精度类型。