ASP.NET Core 应用程序使用 Newtonsoft JSON.NET 进行序列化:
builder.Services.AddControllers().AddNewtonsoftJson();
有一些模型具有 double 类型的属性:
public class SomeModel
{
public double Number { get; set; } = 0.0000000100000000000000001234567;
}
还有这个控制器:
[ApiController]
public class HomeController : ControllerBase
{
[HttpGet]
[Route("/")]
public SomeModel Index()
{
return new SomeModel();
}
}
结果是json
{"number":1E-08}
。
预期结果是
{"number": 0.0000000100000000000000001234567}
。如何才能实现这一目标?
我已经尝试使用
FloatParseHandling = FloatParseHandling.Decimal
和 创建新转换器,但科学记数法仍然存在。
您必须从一开始就指定格式 这个例子应该可以帮助您理解以及如何转换:
void Main()
{
var x = new SomeModel().Number;
Console.WriteLine(x);
Console.WriteLine(decimal.Parse(x.ToString(), NumberStyles.Float));
var x2 = new SomeModel().Number2;
Console.WriteLine(x2);
Console.WriteLine(decimal.Parse(x2.ToString(), NumberStyles.Float));
}
public class SomeModel
{
public double Number { get; set; } = 0.0000000100000000000000001234567;
public double Number2 { get; set; } = 0.0000000100000000000000001234567F;
}
结果将是
1E-08
0.00000001
9.99999993922529E-09
0.00000000999999993922529