This was due to a change in the parsing/formatting of single/double precision floating point numbers as of .NET 3.
The change makes floating point numbers more IEEE compliant with the aim to make numbers "round-trippable" (i.e. double.Parse(value.ToString()) == value )
There's more information in this blog with some links to the GH issues that spawned the conversation if you're interested in a drilldown any further:
https://devblogs.microsoft.com/dotnet/floating-point-parsing-and-formatting-improvements-in-net-core-3-0/