Tại sao .NET 5.0 và Framework trong C # không trả về cùng một giá trị [trùng lặp]

Dec 28 2020

Tôi có hai giá trị như dưới đây,

V1 = 44194.291666666664v2 = 44193.

Các thao tác dưới đây trả về các giá trị khác nhau trong .NETCore và .Framework

Kết quả sản phẩm Phép toán số học : (v1 - v2) ToString () (v1 - v2) .ToString ()
Kết quả .NET5.0 1,2916666666642413 "1.2916666666642413"
Kết quả .NETFramework 1,2916666666642414 "1.29166666666424"

Đoạn mã

        double v1 = 44194.291666666664;
        double v2 = 44193;

        double value = v1 - v2;
        string output = (v1 - v2).ToString();

Trả lời

1 JonathanG. Jan 07 2021 at 22:02

Đây là (có thể) theo thiết kế của .NET Core 3.0. Xem bài đăng trên blog này về sự thay đổi:https://devblogs.microsoft.com/dotnet/floating-point-parsing-and-formatting-improvements-in-net-core-3-0/