如果我有以下表达式:
byte A = 69;
int B = 123;
long C = 3210;
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
我注意到 Java 从 X 中丢失了精度,其中 338.1 是隐式双精度,而 C# 几乎没有。我不明白为什么,因为 338.1 等于浮点数和双精度数。点后只有一位数字。