小编Fra*_*lan的帖子

.net core 3 产生与 2.2 版本不同的浮点结果

这是一段示例代码,其输出来自 .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)

c# c#-8.0 .net-core-2.2 .net-core-3.0 .net-core-3.1

3
推荐指数
1
解决办法
876
查看次数

标签 统计

.net-core-2.2 ×1

.net-core-3.0 ×1

.net-core-3.1 ×1

c# ×1

c#-8.0 ×1