เหตุใด. NET 5.0 และ Framework ใน C # จึงไม่ส่งคืนค่าเดียวกัน [ซ้ำกัน]

Dec 28 2020

ฉันมีสองค่าดังต่อไปนี้

V1 = 44194.291666666664และv2 = 44193.

การดำเนินการด้านล่างจะส่งคืนค่าที่แตกต่างกันใน. NETCore และ. Framework

ผลลัพธ์ของผลิตภัณฑ์ การดำเนินการทางคณิตศาสตร์ : (v1 - v2) ToString () (v1 - v2) .oString ()
.NET5.0 ผลลัพธ์ 1.2916666666642413 "1.2916666666642413"
.NETFramework ผลลัพธ์ 1.2916666666642414 "1.29166666666424"

ข้อมูลโค้ด

        double v1 = 44194.291666666664;
        double v2 = 44193;

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

คำตอบ

1 JonathanG. Jan 07 2021 at 22:02

นี่คือ (น่าจะ) โดยการออกแบบเป็น. NET Core 3.0 ดูบล็อกโพสต์เกี่ยวกับการเปลี่ยนแปลงนี้:https://devblogs.microsoft.com/dotnet/floating-point-parsing-and-formatting-improvements-in-net-core-3-0/