这是一段示例代码,其输出来自 .net core 2.2 和 3.1。它显示了基本浮点表达式 a^b 的不同计算结果。
在本例中,我们计算 1.9 的 3 次方。以前的 .NET 框架产生正确的结果,但 .net core 3.0 和 3.1 产生不同的结果。
这是有意更改吗?我们如何将财务计算代码迁移到新版本,同时保证数值计算仍会产生相同的结果?(如果 .NET 也有十进制数学库就好了)。
public static class Program
{
public static void Main(string[] args)
{
Console.WriteLine("--- Decimal ---------");
ComputeWithDecimalType();
Console.WriteLine("--- Double ----------");
ComputeWithDoubleType();
Console.ReadLine();
}
private static void ComputeWithDecimalType()
{
decimal a = 1.9M;
decimal b = 3M;
decimal c = a * a * a;
decimal d = (decimal) Math.Pow((double) a, (double) b);
Console.WriteLine($"a * a * a = …Run Code Online (Sandbox Code Playgroud)