gpt4 book ai didi

c# - newtonsoft json 只解析 16 位有效数字

转载 作者:行者123 更新时间:2023-11-30 21:35:28 25 4
gpt4 key购买 nike

当我解析以下 json 时:

{
"Item1": 123456789.0123456789,
"Item2": "123456789.0123456789",
"Item3": 1.234567890123456789,
"Item4": 1234567890123456789
}

像这样:

string data = "{\"Item1\":123456789.0123456789,\"Item2\":\"123456789.0123456789\",\"Item3\":1.234567890123456789,\"Item4\":1234567890123456789}";
JObject json = JsonConvert.DeserializeObject<JObject>(data, new JsonSerializerSettings { DateParseHandling = DateParseHandling.None });
Console.WriteLine(json["Item1"].Value<decimal>());
Console.WriteLine(json["Item2"].Value<decimal>());
Console.WriteLine(json["Item3"].Value<decimal>());
Console.WriteLine(json["Item4"].Value<decimal>());

然后我得到以下输出:

123456789,012346
123456789,0123456789
1,23456789012346
1234567890123456789

在我实际的 json 数据源中,输入类似于 "name":123456789.0123456789。如何在不丢失精度的情况下解析其整个十进制值?

最佳答案

您可以使用 FloatParseHandling Enumeration指示它反序列化为 decimal:

JObject json = JsonConvert.DeserializeObject<JObject>(data, 
new JsonSerializerSettings {
DateParseHandling = DateParseHandling.None,
FloatParseHandling = FloatParseHandling.Decimal // Added new setting
});

(您没有指定您使用的是哪个版本的 Newtonsoft,所以我假设是最新的)

关于c# - newtonsoft json 只解析 16 位有效数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49189362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com