เหตุใด. NET 5.0 และ Framework ใน C # จึงไม่ส่งคืนค่าเดียวกัน [ซ้ำกัน]
ฉันมีสองค่าดังต่อไปนี้
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.
นี่คือ (น่าจะ) โดยการออกแบบเป็น. NET Core 3.0 ดูบล็อกโพสต์เกี่ยวกับการเปลี่ยนแปลงนี้:https://devblogs.microsoft.com/dotnet/floating-point-parsing-and-formatting-improvements-in-net-core-3-0/