我正在使用NewtonSoft的JSON.NET程序集在C#控制台应用程序中加载.json文件。我认为我完成了大部分工作,除了我发现一些负浮动值正在被舍入。
这是相关代码;正如您所看到的,我尝试了load
和parse
两种方法但结果相同。
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
,则应该有足够的数字)?
答案 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来保留有效数字。