.NET Core接口返回float字段,后端监测到的值为0.1,但是前端获取到数据显示为0.100000001,这是因为flaot精度问题,怎么解决呢?
public class SingleConverter : JsonConverter<Single>
{
public override Single Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
if (reader.TokenType == JsonTokenType.String)
{
if (Single.TryParse(reader.GetString(), out Single value)) { return value; }
}
return reader.GetSingle();
}
public override void Write(Utf8JsonWriter writer, float value, JsonSerializerOptions options)
{
writer.WriteStringValue(value.ToString());
}
}
Startup中注册
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers(options =>
{
options.EnableEndpointRouting = false;
options.RespectBrowserAcceptHeader = true; // false by default
options.Conventions.Add(new RouteTokenTransformerConvention(new SlugifyParameterTransformer()));
}).ConfigureApiBehaviorOptions(options => { })
.AddControllersAsServices()
.AddJsonOptions(options =>
{
options.JsonSerializerOptions.Converters.Add(new SingleConverter());
})
}