之間的表達式如果我有以下表達式:隱式轉換/促銷浮動的或雙在C#和Java
byte A = 69;
int B = 123;
long C =;
float D = 4.9f;
double E = 11.11;
double X = (B * 100) + 338.1 - (E/B)/C;
double X1 = (B * 100) + (A * D) - (E/B)/C;
// JAVA - lost precision
System.out.println(X); // 12638.099971861307
System.out.println(X1); // 12638.099581236307
// C# - almost the same
Console.WriteLine(X); // 12638.0999718613
Console.WriteLine(X1) // 12638.0999784417
我注意到,爪哇失去從X精度其中338.1是隱式的雙而C#幾乎不。我不明白爲什麼,因爲338.1在float和double中是等於的。點後只有一個數字。
338.1在float和double中是不相同的。 338.1的確切二進制擴展是永久重複的,所以當表達爲雙精度時,它的整數非零數字多於浮點數。 –
請閱讀http://csharpindepth.com/Articles/General/FloatingPoint.aspx – Rohit